<?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>20372</bug_id>
          
          <creation_ts>2008-08-13 12:00:08 -0700</creation_ts>
          <short_desc>HTML/SVGScriptElement need to share code</short_desc>
          <delta_ts>2008-10-03 01:06:23 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>eric</cc>
    
    <cc>jay</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88423</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-13 12:00:08 -0700</bug_when>
    <thetext>Solution: Create common base class ScriptElement (just like there&apos;s StyleElement for HTML/SVGStyleElement), refactor all code from HTMLScriptElement.

After that&apos;s landed, make SVGScriptElement use the new base class, as SVGScriptElement is really incomplete and buggy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88425</commentid>
    <comment_count>1</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-13 12:03:04 -0700</bug_when>
    <thetext>*** Bug 19391 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88427</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-13 12:03:07 -0700</bug_when>
    <thetext>*** Bug 15363 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88428</commentid>
    <comment_count>3</comment_count>
      <attachid>22778</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-13 12:08:31 -0700</bug_when>
    <thetext>Created attachment 22778
Patch 1/2 - v1: Refactor HTMLScriptElement code in common base class

Refactor HTMLScriptElement code in ScriptElement. SVGScriptElement left nearly as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88453</commentid>
    <comment_count>4</comment_count>
      <attachid>22784</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-13 18:42:43 -0700</bug_when>
    <thetext>Created attachment 22784
Patch 1/2 - v2: Refactor HTMLScriptElement code in common base class

Updated version, resolving the MI issues Eric &amp; Maciej noted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88455</commentid>
    <comment_count>5</comment_count>
      <attachid>22784</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-13 19:00:42 -0700</bug_when>
    <thetext>Comment on attachment 22784
Patch 1/2 - v2: Refactor HTMLScriptElement code in common base class

We talked a bit over IRC.

I don&apos;t really like the name &quot;ScriptElementData&quot;, and I&apos;m not sure that &quot;ScriptElement&quot; shoudl be called an Element since it&apos;s not...

But I don&apos;t really have better suggestions for either name, so r=me.

Looking forward to part 2!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88456</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-13 19:23:12 -0700</bug_when>
    <thetext>Patch 1/2 landed in r35744.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91290</commentid>
    <comment_count>7</comment_count>
      <attachid>23454</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-09-15 18:07:56 -0700</bug_when>
    <thetext>Created attachment 23454
Patch 2/2 - v1: Let SVGScriptElement use the new ScriptElement base class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91291</commentid>
    <comment_count>8</comment_count>
      <attachid>23454</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-15 18:30:37 -0700</bug_when>
    <thetext>Comment on attachment 23454
Patch 2/2 - v1: Let SVGScriptElement use the new ScriptElement base class

I&apos;m not sure what &quot;resied&quot; means:
+    // m_createdByParser is never reset - always resied at the initial value set while parsing.

Maybe I&apos;m missing something.  It&apos;s not clear to me that you&apos;re testing both cases of externalResourcesRequired with your test cases (and what about the case where exernalResourcesRequired is set from true to false while a load is still in progress?)

This seems a little confusing:
+bool SVGScriptElement::haveLoadedRequiredResources()
+{
+    return !externalResourcesRequiredBaseValue() || m_data.haveFiredLoadEvent();
+}

It returns &quot;true&quot; if it&apos;s sent a load event.  Is the &quot;sentLoadEvent&quot; reset if the src changes?  I don&apos;t see it ever reset.  Seems a second load event should be sent if the src for a script element is changed, no?

Seems that &quot;haveFiredLoadEvent&quot; should be set after the event was actually sent, no?

+    // Eventually send SVGLoad event now for the dynamically inserted script element
+    if (!externalResourcesRequiredBaseValue()) {
+        m_data.setHaveFiredLoadEvent(true);
+        sendSVGLoadEventIfPossible();
+    }

Or maybe it just shouldn&apos;t call the &quot;Send if possible&quot; method in this case, since it&apos;s always going to send, no?

This is a good patch, I&apos;m just not fully convinced it&apos;s 100% correct.  Perhaps you can convince me via IRC, or by replying to my comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91296</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-09-15 18:50:48 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 23454 [edit])
&gt; I&apos;m not sure what &quot;resied&quot; means:
&gt; +    // m_createdByParser is never reset - always resied at the initial value
&gt; set while parsing.
Should be &quot;resides&quot;.
 
&gt; Maybe I&apos;m missing something.  It&apos;s not clear to me that you&apos;re testing both
&gt; cases of externalResourcesRequired with your test cases (and what about the
&gt; case where exernalResourcesRequired is set from true to false while a load is
&gt; still in progress?)
Changing this attribute while a load is still in progress would cause the SVGLoad event to be not send at all. If externalResourcesRequired is set to false, the SVGLoad event is fired as soon as &lt;/script&gt; is reached, or as soon as the element is inserted into the document. If it&apos;s set to true, we&apos;re supposed to wait until the script is loaded. So if you change this attribute while loading from true to false, the time where the SVGLoad event should have been sent, has passed. So we won&apos;t actually send it. Not sure if it&apos;s okay, the specification doesn&apos;t say a word about this.

Though this is really the most rare corner case I&apos;ve ever thought about ;-)

&gt; This seems a little confusing:
&gt; +bool SVGScriptElement::haveLoadedRequiredResources()
&gt; +{
&gt; +    return !externalResourcesRequiredBaseValue() ||
&gt; m_data.haveFiredLoadEvent();
&gt; +}
&gt; 
&gt; It returns &quot;true&quot; if it&apos;s sent a load event.  Is the &quot;sentLoadEvent&quot; reset if
&gt; the src changes?  I don&apos;t see it ever reset.  Seems a second load event should
&gt; be sent if the src for a script element is changed, no?
It&apos;s just like the same check in SVGImageElement, which is your work ;-)
The firedLoad event is reset by ScriptElement::requestScript, which is called when src changes and the &lt;script&gt; element was not created by the parser (&lt;script&gt; elements created by the parser are not allowed to react to src attribute changes, only dynamically created ones are, that is well tested for both HTML/SVG).
 
&gt; Seems that &quot;haveFiredLoadEvent&quot; should be set after the event was actually
&gt; sent, no?
No, as sendSVGLoadEventIfPossible() checks haveLoadedRequiredResources() which in turn asks ScriptElement::haveFiredLoadEvent(). A bit confusing, but modelled just like the existing concept in HTMLImageLoader.

&gt; 
&gt; +    // Eventually send SVGLoad event now for the dynamically inserted script
&gt; element
&gt; +    if (!externalResourcesRequiredBaseValue()) {
&gt; +        m_data.setHaveFiredLoadEvent(true);
&gt; +        sendSVGLoadEventIfPossible();
&gt; +    }
&gt; 
&gt; Or maybe it just shouldn&apos;t call the &quot;Send if possible&quot; method in this case,
&gt; since it&apos;s always going to send, no?
No, the line above reads:

    if (m_data.createdByParser())
        return;

That&apos;s only called for dynamic script elements, as the comment says.

&gt; 
&gt; This is a good patch, I&apos;m just not fully convinced it&apos;s 100% correct.  Perhaps
&gt; you can convince me via IRC, or by replying to my comments above.

Thanks, I hope this is convincing enough :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91863</commentid>
    <comment_count>10</comment_count>
      <attachid>23595</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-09-19 20:00:31 -0700</bug_when>
    <thetext>Created attachment 23595
Patch 2/2 - v2: Let SVGScriptElement use the new ScriptElement base class

The patch hasn&apos;t changed, a new layout test has been added, covering the modification of &apos;externalResourcesRequired&apos; of dynamic SVG script elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91865</commentid>
    <comment_count>11</comment_count>
      <attachid>23595</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-09-19 20:30:54 -0700</bug_when>
    <thetext>Comment on attachment 23595
Patch 2/2 - v2: Let SVGScriptElement use the new ScriptElement base class

Looks good to me and I hear Eric greenlighted this in irc as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91866</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-09-19 20:36:30 -0700</bug_when>
    <thetext>Thanks for the review! Landed in r36699.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93866</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-10-03 01:06:23 -0700</bug_when>
    <thetext>FYI, I&apos;m pretty sure this caused a serious crash.  See bug 21329.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22778</attachid>
            <date>2008-08-13 12:08:31 -0700</date>
            <delta_ts>2008-08-13 18:42:43 -0700</delta_ts>
            <desc>Patch 1/2 - v1: Refactor HTMLScriptElement code in common base class</desc>
            <filename>RefactorScriptCode.diff</filename>
            <type>text/plain</type>
            <size>39273</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM1NzIy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzQgQEAKKzIwMDgtMDgt
MTMgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MU2NyaXB0
RWxlbWVudCdzIGNvZGUgaW50byBhIGNvbW1vbiBiYXNlIGNsYXNzOiBTY3JpcHRFbGVtZW50Lgor
ICAgICAgICBTVkdTY3JpcHRFbGVtZW50IHdpbGwgYmUgY29udmVydGVkIHRvIHVzZSBTY3JpcHRF
bGVtZW50IGluIGEgZm9sbG93LXVwIHBhdGNoLgorICAgICAgICAKKyAgICAgICAgVGhpcyByZXNv
bHZlcyBjb2RlIGR1cGxpY2F0aW9ucyBhbmQgYWxsb3dzIHVzIHRvIGNvbXBsZXRseSByZXBsYWNl
IHRoZSBvbGQKKyAgICAgICAgU1ZHU2NyaXB0RWxlbWVudCAod2hpY2ggZG9lc24ndCB1c2UgQ2Fj
aGVkU2NyaXB0LCBubyBkeW5hbWljIGluamVjdGVkIHNjcmlwdHMgZXRjLi4pCisKKyAgICAgICAg
Tm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHlldCwgYXMgU1ZHU2NyaXB0RWxlbWVudCBkb2Vzbid0IHll
dCB1c2UgdGhlIG5ldyBiYXNlIGNsYXNzLgorCisgICAgICAgICogV2ViQ29yZS5wcm86IEFkZCBu
ZXcgU2NyaXB0RWxlbWVudC5jcHAgdG8gYnVpbGQuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOiBEdXR0by4K
KyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6IEFkZGVkLiAxOjEgYmFzZWQgb24gSFRN
TFNjcmlwdEVsZW1lbnQKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OlNjcmlwdEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6flNjcmlwdEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cGFyc2VTb3VyY2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cmV0cmlldmVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudDo6ZXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RWxlbWVudDo6c2NyaXB0Q2hhcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpzY3JpcHRDb250ZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnNldENyZWF0ZWRCeVBhcnNlcik6
CisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6IEhhbmRsZSBzZXR0aW5nIHNldENyZWF0
ZWRCeVBhcnNlciBmb3IgU1ZHU2NyaXB0RWxlbWVudCBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAgICogaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHA6IFJlZmFjdG9yZWQgY29kZSwgbW9zdCBwdXNoZWQgZG93biB0byBTY3Jp
cHRFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3Jp
cHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojp+SFRNTFNj
cmlwdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmlzVVJM
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVt
ZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxl
bWVudDo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0SHRtbEZvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNoYXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNjcmlwdEVsZW1lbnQ6OnNyYyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxl
bWVudDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2NyaXB0
Q2hhcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZXZhbHVhdGVT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnNvdXJjZUF0dHJp
YnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjaGFyc2V0
QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnR5
cGVBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6
bGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxl
bWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVs
ZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDogSW5oZXJpdCBmcm9t
IFNjcmlwdEVsZW1lbnQsIGRvbid0IGFjdHVhbGx5IHVzZSBpdCB5ZXQuCisgICAgICAgIChXZWJD
b3JlOjpTVkdTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTY3JpcHRFbGVtZW50Ojpzb3VyY2VBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTY3JpcHRFbGVtZW50OjpjaGFyc2V0QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6dHlwZUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6Omxhbmd1YWdlQXR0cmlidXRlVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDA4LTA4LTEzICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2VkIHRoZSBJbnNwZWN0
b3JDb250cm9sbGVyIHNvIGl0IGNhbiBiZSBub3RpZmllZCB3aGVuIHRoZQpJbmRleDogV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS5wcm8JKHJldmlzaW9uIDM1NzIyKQorKysgV2Vi
Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw2ICs1MzYsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBkb20vUXVhbGlmaWVkTmFtZS5jcHAgXAogICAgIGRvbS9SYW5nZS5jcHAgXAogICAgIGRv
bS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorICAgIGRvbS9TY3JpcHRFbGVtZW50LmNw
cCBcCiAgICAgZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKICAgICBkb20vU3RhdGljTm9kZUxp
c3QuY3BwIFwKICAgICBkb20vU3R5bGVkRWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZVNvdXJj
ZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzU3MjIp
CisrKyBXZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsNyBA
QCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9R
dWFsaWZpZWROYW1lLmNwcAogICAgICAgICBkb20vUmFuZ2UuY3BwCiAgICAgICAgIGRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAKKyAgICAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCiAg
ICAgICAgIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcAogICAgICAgICBkb20vU3RhdGljTm9kZUxp
c3QuY3BwCiAgICAgICAgIGRvbS9TdHlsZUVsZW1lbnQuY3BwCkluZGV4OiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkocmV2aXNpb24gMzU3MjIpCisrKyBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTA0MDAsNiArMTA0MDAsMjIgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNjcmlwdEVsZW1lbnQuY3Bw
Ig0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9Q
R098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cU2NyaXB0RWxlbWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNlbGVjdG9yTm9kZUxpc3Qu
Y3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM1NzIyKQorKysgV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAJCTA2NkM3NzMx
MEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2Qzc3MkYwQUI2MDNGRDAwMjM4
Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmggKi87IH07CiAJCTA2RTgxRUQ3MEFCNUQ1
RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RTgxRUQ2MEFCNUQ1RTkwMEM4Nzgz
NyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLzsgfTsKIAkJMDZFODFFRUMwQUI1
REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RTgxRUVCMEFCNURBOTcwMEM4
NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0gKi87IH07CisJCTA4QTQ4NDc3
MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4QTQ4NDc1MEU1MjcyQzUwMEMzRkU3NiAvKiBT
Y3JpcHRFbGVtZW50LmNwcCAqLzsgfTsKKwkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNj
cmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggKi87IH07CiAJ
CTA4RTRGRTQ2MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU0RkU0NTBFMkJENDE0
MDBGNENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwICovOyB9OwogCQkwQTQ4NDQ5OTBDQTQ0
Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2lu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NTYwMjhGMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU2MDI4RDBFNEI3NjU4MDA2NUIwMzgg
LyogUmVuZGVyTWFycXVlZS5oICovOyB9OwpAQCAtNDU0MSw2ICs0NTQzLDggQEAKIAkJMDY2Qzc3
MkYwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDhBNDg0NzUwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA4QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEVsZW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFNEZFNDUwRTJCRDQxNDAwRjRDQUUwIC8q
IEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hcnF1ZWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzI1LDYgKzEzMzI5LDggQEAKIAkJCQlEMjNDQTU0ODBBQjBF
OTgzMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaWRsICovLAogCQkJCTg1MDMxQjM1MEE0NEVG
QzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFC
MzYwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJ
MDhBNDg0NzUwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwICovLAorCQkJCTA4
QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggKi8sCiAJCQkJQkM3RkE2
ODAwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuY3BwICovLAogCQkJCUJDN0ZB
NjdGMEQxRjE2NzkwMERCMjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggKi8sCiAJCQkJQkM3RkE2
MkMwRDFGMEVGRjAwREIyMkE5IC8qIFN0YXRpY05vZGVMaXN0LmNwcCAqLywKQEAgLTE1Mzg5LDYg
KzE1Mzk1LDcgQEAKIAkJCQkzMUMwRkY0QjBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0QW5p
bWF0aW9uRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGNEMwRTRDRUZE
RDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFDMEZGNEUwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEE0ODQ3ODBFNTI3MkM1MDBDM0ZFNzYgLyog
U2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzE3Miw2ICsxNzE3OSw3IEBACiAJ
CQkJMzFDMEZGM0YwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJL
aXRBbmltYXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjREMEU0Q0VGREQw
MDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLywKKwkJ
CQkwOEE0ODQ3NzBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IGRvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vU2Ny
aXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBkb20vU2NyaXB0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVs
bGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgorCisjaW5jbHVk
ZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisj
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJUZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyaXB0RWxl
bWVudDo6U2NyaXB0RWxlbWVudCgpCisgICAgOiBtX2NhY2hlZFNjcmlwdCgwKQorICAgICwgbV9j
cmVhdGVkQnlQYXJzZXIoZmFsc2UpCisgICAgLCBtX2V2YWx1YXRlZChmYWxzZSkKK3sKK30KKwor
U2NyaXB0RWxlbWVudDo6flNjcmlwdEVsZW1lbnQoKQoreworICAgIGlmIChtX2NhY2hlZFNjcmlw
dCkKKyAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKK30KKworYm9v
bCBTY3JpcHRFbGVtZW50OjpzaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCkKK3sKKyAgICAvKgor
ICAgICAgICAgTW96aWxsYSAxLjggYWNjZXB0cyBqYXZhc2NyaXB0MS4wIC0gamF2YXNjcmlwdDEu
NywgYnV0IFdpbklFIDcgYWNjZXB0cyBvbmx5IGphdmFzY3JpcHQxLjEgLSBqYXZhc2NyaXB0MS4z
LgorICAgICAgICAgTW96aWxsYSAxLjggYW5kIFdpbklFIDcgYm90aCBhY2NlcHQgamF2YXNjcmlw
dCBhbmQgbGl2ZXNjcmlwdC4KKyAgICAgICAgIFdpbklFIDcgYWNjZXB0cyBlY21hc2NyaXB0IGFu
ZCBqc2NyaXB0LCBidXQgTW96aWxsYSAxLjggZG9lc24ndC4KKyAgICAgICAgIE5laXRoZXIgTW96
aWxsYSAxLjggbm9yIFdpbklFIDcgYWNjZXB0IGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFj
ZS4KKyAgICAgICAgIFdlIHdhbnQgdG8gYWNjZXB0IGFsbCB0aGUgdmFsdWVzIHRoYXQgZWl0aGVy
IG9mIHRoZXNlIGJyb3dzZXJzIGFjY2VwdCwgYnV0IG5vdCBvdGhlciB2YWx1ZXMuCisgICAgICov
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB2YWxpZExhbmd1YWdlc1tdID0geworICAg
ICAgICAiamF2YXNjcmlwdCIsCisgICAgICAgICJqYXZhc2NyaXB0MS4wIiwKKyAgICAgICAgImph
dmFzY3JpcHQxLjEiLAorICAgICAgICAiamF2YXNjcmlwdDEuMiIsCisgICAgICAgICJqYXZhc2Ny
aXB0MS4zIiwKKyAgICAgICAgImphdmFzY3JpcHQxLjQiLAorICAgICAgICAiamF2YXNjcmlwdDEu
NSIsCisgICAgICAgICJqYXZhc2NyaXB0MS42IiwKKyAgICAgICAgImphdmFzY3JpcHQxLjciLAor
ICAgICAgICAibGl2ZXNjcmlwdCIsCisgICAgICAgICJlY21hc2NyaXB0IiwKKyAgICAgICAgImpz
Y3JpcHQiCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWxpZExhbmd1YWdl
c0NvdW50ID0gc2l6ZW9mKHZhbGlkTGFuZ3VhZ2VzKSAvIHNpemVvZih2YWxpZExhbmd1YWdlc1sw
XSk7IAorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlID0gdHlwZUF0dHJpYnV0ZVZhbHVl
KCk7CisgICAgaWYgKCF0eXBlLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgbG93ZXJUeXBl
ID0gdHlwZS5zdHJpbmcoKS5zdHJpcFdoaXRlU3BhY2UoKS5sb3dlcigpOworICAgICAgICBpZiAo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobG93ZXJUeXBl
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlID0gbGFuZ3VhZ2VBdHRyaWJ1
dGVWYWx1ZSgpOworICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmlu
ZyBsb3dlckxhbmd1YWdlID0gbGFuZ3VhZ2Uuc3RyaW5nKCkubG93ZXIoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbGlkTGFuZ3VhZ2VzQ291bnQ7ICsraSkKKyAgICAgICAg
ICAgIGlmIChsb3dlckxhbmd1YWdlID09IHZhbGlkTGFuZ3VhZ2VzW2ldKQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBObyB0eXBlIG9yIGxhbmd1YWdlIGlzIHNwZWNpZmllZCwgc28gd2UgYXNzdW1lIHRoZSBzY3Jp
cHQgdG8gYmUgSmF2YVNjcmlwdAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNjcmlwdEVs
ZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikgY29uc3QKK3sKKyAgICByZXR1
cm4gYXR0ci0+bmFtZSgpID09IHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCk7Cit9CisKK3ZvaWQgU2Ny
aXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkK
K3sKKyAgICBBU1NFUlQoIW1fY2FjaGVkU2NyaXB0KTsKKworICAgIGlmIChtX2NyZWF0ZWRCeVBh
cnNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZWxlbWVu
dC0+ZG9jdW1lbnQoKTsKKworICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlJ2QgbGlrZSB0byBl
dmFsdWF0ZSBzY3JpcHRzIHdoaWNoIGFyZSBpbnNlcnRlZCBpbnRvIGEgCisgICAgLy8gdmlld2xl
c3MgZG9jdW1lbnQgYnV0IHRoaXMnbGwgZG8gZm9yIG5vdy4KKyAgICAvLyBTZWUgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNworICAgIGlmICghZG9jdW1lbnQtPmZy
YW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsID0g
c291cmNlQXR0cmlidXRlVmFsdWUoKTsKKyAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmV0cmlldmVTY3JpcHQoZWxlbWVudCwgdXJsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1wdHkgc2NyaXB0IG5vZGUsIHdlIHNob3VsZG4ndCBl
dmFsdWF0ZSB0aGUgc2NyaXB0CisgICAgLy8gYmVjYXVzZSBpZiBhIHNjcmlwdCBpcyBpbnNlcnRl
ZCBhZnRlcndhcmRzIChieSBzZXR0aW5nIHRleHQgb3IgaW5uZXJUZXh0KQorICAgIC8vIGl0IHNo
b3VsZCBiZSBldmFsdWF0ZWQsIGFuZCBldmFsdWF0ZVNjcmlwdCBvbmx5IGV2YWx1YXRlcyBhIHNj
cmlwdCBvbmNlLgorICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBzY3JpcHRDb250ZW50KGVsZW1l
bnQpOworICAgIGlmICghc2NyaXB0U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgZXZhbHVhdGVT
Y3JpcHQoZWxlbWVudCwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLCBzY3JpcHRTdHJpbmcpOwor
fQorCit2b2lkIFNjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQoreworICAgIGlm
IChtX2NhY2hlZFNjcmlwdCkgeworICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50
KHRoaXMpOworICAgICAgICBtX2NhY2hlZFNjcmlwdCA9IDA7CisgICAgfQorfQorCit2b2lkIFNj
cmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIC8vIElmIGEgbm9kZSBpcyBpbnNlcnRlZCBhcyBhIGNoaWxkIG9mIHRoZSBzY3JpcHQgZWxl
bWVudAorICAgIC8vIGFuZCB0aGUgc2NyaXB0IGVsZW1lbnQgaGFzIGJlZW4gaW5zZXJ0ZWQgaW4g
dGhlIGRvY3VtZW50CisgICAgLy8gd2UgZXZhbHVhdGUgdGhlIHNjcmlwdC4KKyAgICBpZiAoIW1f
Y3JlYXRlZEJ5UGFyc2VyICYmIGVsZW1lbnQtPmluRG9jdW1lbnQoKSAmJiBlbGVtZW50LT5maXJz
dENoaWxkKCkpCisgICAgICAgIGV2YWx1YXRlU2NyaXB0KGVsZW1lbnQsIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZygpLCBzY3JpcHRDb250ZW50KGVsZW1lbnQpKTsKK30KKwordm9p
ZCBTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oY29uc3QgRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElmIHdl
IGhhdmUgbm8gc3JjIGFuZCBubyB0ZXh0LAorICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGluZyBs
YXRlci4KKyAgICBpZiAoc291cmNlQXR0cmlidXRlVmFsdWUoKS5pc0VtcHR5KCkgJiYgc2NyaXB0
Q29udGVudChlbGVtZW50KS5pc0VtcHR5KCkpCisgICAgICAgIHNldENyZWF0ZWRCeVBhcnNlcihm
YWxzZSk7Cit9CisKK3ZvaWQgU2NyaXB0RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIG8pCit7CisgICAgQ2FjaGVkU2NyaXB0KiBjcyA9IHN0YXRpY19jYXN0PENhY2hlZFNj
cmlwdCo+KG8pOworICAgIEFTU0VSVChjcyA9PSBtX2NhY2hlZFNjcmlwdCk7CisKKyAgICBpZiAo
Y3MtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAg
ZWxzZSB7CisgICAgICAgIGV2YWx1YXRlU2NyaXB0KGNzLT51cmwoKSwgY3MtPnNjcmlwdCgpKTsK
KyAgICAgICAgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKKyAgICB9CisKKyAgICAvLyBzY3JpcHQgZXZh
bHVhdGlvbiBtYXkgaGF2ZSBkZXJlZmZlZCBpdCBhbHJlYWR5CisgICAgaWYgKG1fY2FjaGVkU2Ny
aXB0KSB7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAg
ICAgIG1fY2FjaGVkU2NyaXB0ID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgU2NyaXB0RWxlbWVudDo6
cGFyc2VTb3VyY2VBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiB1cmwpCit7CisgICAgaWYgKG1fZXZhbHVhdGVkIHx8IG1fY2FjaGVkU2NyaXB0IHx8
IG1fY3JlYXRlZEJ5UGFyc2VyIHx8ICFlbGVtZW50LT5pbkRvY3VtZW50KCkgfHwgdXJsLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEV2YWx1YXRlIHNjcmlwdHMg
aW4gdmlld2xlc3MgZG9jdW1lbnRzLgorICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NzI3CisgICAgaWYgKCFlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFt
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXRyaWV2ZVNjcmlwdChlbGVtZW50LCB1cmwp
OworfQorCit2b2lkIFNjcmlwdEVsZW1lbnQ6OnJldHJpZXZlU2NyaXB0KGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJsKQoreworICAgIG1fY2FjaGVkU2NyaXB0
ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQodXJsLCBz
Y3JpcHRDaGFyc2V0KGVsZW1lbnQpKTsKKworICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKKyAgICAg
ICAgbV9jYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGRp
c3BhdGNoRXJyb3JFdmVudCgpOworfQorCit2b2lkIFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2Ny
aXB0KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCkKK3sKKyAgICBpZiAobV9ldmFsdWF0ZWQpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBpZiAoIXNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgRnJhbWUqIGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAg
ICBpZiAoZnJhbWUpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkp
IHsKKyAgICAgICAgICAgIG1fZXZhbHVhdGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgc3RhcnRpbmcgbGluZSBudW1iZXIgd2lsbCBiZSBpbmNvcnJlY3QgZm9yIGV2YWx1
YXRpb24gdHJpZ2dlcmVkCisgICAgICAgICAgICAvLyBmcm9tIGluc2VydGVkSW50b0RvY3VtZW50
IG9yIGNoaWxkcmVuQ2hhbmdlZC4KKyAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+ZXZhbHVh
dGUodXJsLCAxLCBzY3JpcHQpOworICAgICAgICAgICAgRG9jdW1lbnQ6OnVwZGF0ZURvY3VtZW50
c1JlbmRlcmluZygpOworICAgICAgICB9CisgICAgfQorfQorCitTdHJpbmcgU2NyaXB0RWxlbWVu
dDo6c2NyaXB0Q2hhcnNldChjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIC8v
IEZpcnN0IHdlIHRyeSB0byBnZXQgZW5jb2RpbmcgZnJvbSBjaGFyc2V0IGF0dHJpYnV0ZS4KKyAg
ICBTdHJpbmcgY2hhcnNldCA9IGNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpLnN0cmlwV2hpdGVTcGFj
ZSgpOworCisgICAgLy8gSWYgY2hhcnNldCBoYXMgbm90IGJlZW4gZGVjbGFyZWQgaW4gc2NyaXB0
IHRhZywgZmFsbCBiYWNrIHRvIGZyYW1lIGVuY29kaW5nLgorICAgIGlmIChjaGFyc2V0LmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKKyAgICAgICAgICAgIGNoYXJzZXQgPSBmcmFtZS0+bG9hZGVyKCktPmVuY29kaW5n
KCk7CisgICAgfQorCisgICAgcmV0dXJuIGNoYXJzZXQ7Cit9CisKK1N0cmluZyBTY3JpcHRFbGVt
ZW50OjpzY3JpcHRDb250ZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
VmVjdG9yPFVDaGFyPiB2YWw7CisgICAgVGV4dCogZmlyc3RUZXh0Tm9kZSA9IDA7CisgICAgYm9v
bCBmb3VuZE11bHRpcGxlVGV4dE5vZGVzID0gZmFsc2U7CisKKyAgICBmb3IgKE5vZGUqIG4gPSBl
bGVtZW50LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
IGlmICghbi0+aXNUZXh0Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
VGV4dCogdCA9IHN0YXRpY19jYXN0PFRleHQqPihuKTsKKyAgICAgICAgaWYgKGZvdW5kTXVsdGlw
bGVUZXh0Tm9kZXMpCisgICAgICAgICAgICBhcHBlbmQodmFsLCB0LT5kYXRhKCkpOworICAgICAg
ICBlbHNlIGlmIChmaXJzdFRleHROb2RlKSB7CisgICAgICAgICAgICBhcHBlbmQodmFsLCBmaXJz
dFRleHROb2RlLT5kYXRhKCkpOworICAgICAgICAgICAgYXBwZW5kKHZhbCwgdC0+ZGF0YSgpKTsK
KyAgICAgICAgICAgIGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMgPSB0cnVlOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGZpcnN0VGV4dE5vZGUgPSB0OworICAgIH0KKworICAgIGlmIChmaXJz
dFRleHROb2RlICYmICFmb3VuZE11bHRpcGxlVGV4dE5vZGVzKQorICAgICAgICByZXR1cm4gZmly
c3RUZXh0Tm9kZS0+ZGF0YSgpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQodmFsKTsKK30K
KworfQpJbmRleDogZG9tL1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vU2NyaXB0
RWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgU2NyaXB0RWxlbWVudF9o
CisjZGVmaW5lIFNjcmlwdEVsZW1lbnRfaAorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdG9taWNTdHJpbmc7CitjbGFz
cyBBdHRyaWJ1dGU7CitjbGFzcyBDYWNoZWRTY3JpcHQ7CitjbGFzcyBFbGVtZW50OworCitjbGFz
cyBTY3JpcHRFbGVtZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBTY3JpcHRFbGVtZW50KCk7CisgICAgdmlydHVhbCB+U2NyaXB0RWxlbWVudCgpOworCisg
ICAgYm9vbCBzaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCk7CisgICAgYm9vbCBpc1VSTEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q3JlYXRlZEJ5UGFyc2VyKGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKSB7IG1fY3JlYXRlZEJ5UGFyc2VyID0gY3JlYXRlZEJ5UGFyc2Vy
OyB9CisKKyAgICB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KGNvbnN0IEVsZW1lbnQqKTsKKyAg
ICB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IEVsZW1lbnQqKTsKKyAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbihjb25zdCBF
bGVtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgcGFyc2VTb3VyY2VBdHRyaWJ1dGUoY29uc3Qg
RWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgcmV0cmlldmVTY3JpcHQo
Y29uc3QgRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgZXZhbHVhdGVT
Y3JpcHQoY29uc3QgRWxlbWVudCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCk7CisKKyAgICBTdHJpbmcgc2NyaXB0Q2hhcnNldChjb25zdCBFbGVtZW50KikgY29uc3Q7
CisgICAgU3RyaW5nIHNjcmlwdENvbnRlbnQoY29uc3QgRWxlbWVudCopIGNvbnN0OworCisgICAg
Ly8gSG9va3MgZm9yIEhUTUwvU1ZHU2NyaXB0RWxlbWVudAorICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJz
ZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0eXBlQXR0
cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRF
dmVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQpID0gMDsKKworcHJpdmF0ZToKKyAgICBDYWNoZWRTY3JpcHQqIG1fY2Fj
aGVkU2NyaXB0OworICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CisgICAgYm9vbCBtX2V2YWx1
YXRlZDsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBkb20vWE1MVG9rZW5pemVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBkb20vWE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gMzU3MjIpCisrKyBkb20v
WE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogCiAjaWYg
RU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1NjcmlwdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJYTGlua05h
bWVzLmgiCiAjZW5kaWYKQEAgLTg2OCwxNiArODY5LDIwIEBAIHZvaWQgWE1MVG9rZW5pemVyOjpz
dGFydEVsZW1lbnROcyhjb25zdCAKIAogICAgIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKHNj
cmlwdFRhZykpCiAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRFbGVtZW50Kj4obmV3RWxl
bWVudC5nZXQoKSktPnNldENyZWF0ZWRCeVBhcnNlcih0cnVlKTsKLSAgICBlbHNlIGlmIChuZXdF
bGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWcpKQorI2lmIEVOQUJMRShTVkcp
CisgICAgZWxzZSBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFn
KSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHU2NyaXB0RWxlbWVudCo+KG5ld0VsZW1lbnQuZ2V0
KCkpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CisjZW5kaWYKKyAgICBlbHNlIGlmIChuZXdF
bGVtZW50LT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFN0
eWxlRWxlbWVudCo+KG5ld0VsZW1lbnQuZ2V0KCkpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7
CiAjaWYgRU5BQkxFKFNWRykKICAgICBlbHNlIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpzdHlsZVRhZykpCiAgICAgICAgIHN0YXRpY19jYXN0PFNWR1N0eWxlRWxlbWVudCo+
KG5ld0VsZW1lbnQuZ2V0KCkpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CiAjZW5kaWYKLSAg
ICBlbHNlIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bGlua1RhZykpCisg
ICAgZWxzZSBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShsaW5rVGFnKSkKICAgICAgICAgc3Rh
dGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4obmV3RWxlbWVudC5nZXQoKSktPnNldENyZWF0ZWRC
eVBhcnNlcih0cnVlKTsKIAotICAgIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6c2NyaXB0VGFnKQorICAgIGlmIChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKHNjcmlwdFRhZykK
ICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB8fCBuZXdFbGVtZW50LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpzY3JpcHRUYWcpCiAjZW5kaWYKQEAgLTE5MTUsNyArMTkyMCw3IEBAIHZvaWQgWE1MVG9r
ZW5pemVyOjpwYXJzZVN0YXJ0RWxlbWVudCgpCiAgICAgaWYgKG5ld0VsZW1lbnQtPmhhc1RhZ05h
bWUoc2NyaXB0VGFnKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdEVsZW1lbnQqPihu
ZXdFbGVtZW50LmdldCgpKS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOwogCi0gICAgaWYgKG5l
d0VsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzY3JpcHRUYWcpCisgICAgaWYgKG5ld0Vs
ZW1lbnQtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKQogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHx8
IG5ld0VsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykKICNlbmRpZgpJbmRl
eDogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM1NzIyKQorKysgaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE1ICsyMyw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkNhY2hlZFNj
cmlwdC5oIgotI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRleHQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNTQgKzM1LDMxIEBAIHVzaW5nIG5hbWVz
cGFjZSBFdmVudE5hbWVzOwogCiBIVE1MU2NyaXB0RWxlbWVudDo6SFRNTFNjcmlwdEVsZW1lbnQo
RG9jdW1lbnQqIGRvYykKICAgICA6IEhUTUxFbGVtZW50KHNjcmlwdFRhZywgZG9jKQotICAgICwg
bV9jYWNoZWRTY3JpcHQoMCkKLSAgICAsIG1fY3JlYXRlZEJ5UGFyc2VyKGZhbHNlKQotICAgICwg
bV9ldmFsdWF0ZWQoZmFsc2UpCiB7CiB9CiAKIEhUTUxTY3JpcHRFbGVtZW50Ojp+SFRNTFNjcmlw
dEVsZW1lbnQoKQogewotICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgbV9jYWNoZWRT
Y3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAogYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6
aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKSBjb25zdAogewotICAgIHJldHVybiBhdHRy
LT5uYW1lKCkgPT0gc3JjQXR0cjsKKyAgICByZXR1cm4gU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNo
YW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICAvLyBJZiBhIG5vZGUgaXMgaW5zZXJ0
ZWQgYXMgYSBjaGlsZCBvZiB0aGUgc2NyaXB0IGVsZW1lbnQKLSAgICAvLyBhbmQgdGhlIHNjcmlw
dCBlbGVtZW50IGhhcyBiZWVuIGluc2VydGVkIGluIHRoZSBkb2N1bWVudAotICAgIC8vIHdlIGV2
YWx1YXRlIHRoZSBzY3JpcHQuCi0gICAgaWYgKCFtX2NyZWF0ZWRCeVBhcnNlciAmJiBpbkRvY3Vt
ZW50KCkgJiYgZmlyc3RDaGlsZCgpKQotICAgICAgICBldmFsdWF0ZVNjcmlwdChkb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSwgdGV4dCgpKTsKKyAgICBTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQodGhpcyk7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQ
YXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiB9CiAK
IHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0dHIt
Pm5hbWUoKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikgewotICAgICAgICBpZiAobV9l
dmFsdWF0ZWQgfHwgbV9jYWNoZWRTY3JpcHQgfHwgbV9jcmVhdGVkQnlQYXJzZXIgfHwgIWluRG9j
dW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBGSVhNRTogRXZhbHVh
dGUgc2NyaXB0cyBpbiB2aWV3bGVzcyBkb2N1bWVudHMuCi0gICAgICAgIC8vIFNlZSBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzI3Ci0gICAgICAgIGlmICghZG9jdW1l
bnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB1cmwgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAoIXVybC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gZG9jdW1lbnQoKS0+ZG9jTG9h
ZGVyKCktPnJlcXVlc3RTY3JpcHQodXJsLCBzY3JpcHRDaGFyc2V0KCkpOwotICAgICAgICAgICAg
aWYgKG1fY2FjaGVkU2NyaXB0KQotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRD
bGllbnQodGhpcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hI
VE1MRXZlbnQoZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChhdHRyTmFtZSA9PSBvbmxvYWRBdHRyKQorCisgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0
dHIpCisgICAgICAgIHBhcnNlU291cmNlQXR0cmlidXRlKHRoaXMsIGF0dHItPnZhbHVlKCkpOwor
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9ubG9hZEF0dHIpCiAgICAgICAgIHNldEhUTUxFdmVu
dExpc3RlbmVyKGxvYWRFdmVudCwgYXR0cik7CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CkBAIC05NiwxODcgKzY3LDQ4IEBAIHZvaWQg
SFRNTFNjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKIAogdm9pZCBIVE1MU2NyaXB0RWxl
bWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsKLSAgICAvLyBUaGUgcGFyc2VyIGp1c3Qg
cmVhY2hlZCA8L3NjcmlwdD4uIElmIHdlIGhhdmUgbm8gc3JjIGFuZCBubyB0ZXh0LAotICAgIC8v
IGFsbG93IGR5bmFtaWMgbG9hZGluZyBsYXRlci4KLSAgICBpZiAoZ2V0QXR0cmlidXRlKHNyY0F0
dHIpLmlzRW1wdHkoKSAmJiB0ZXh0KCkuaXNFbXB0eSgpKQotICAgICAgICBzZXRDcmVhdGVkQnlQ
YXJzZXIoZmFsc2UpOworICAgIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbih0
aGlzKTsKICAgICBIVE1MRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiB9CiAKIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBIVE1M
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLQotICAgIEFTU0VSVCghbV9jYWNoZWRT
Y3JpcHQpOwotCi0gICAgaWYgKG1fY3JlYXRlZEJ5UGFyc2VyKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2UnZCBsaWtlIHRvIGV2YWx1YXRlIHNjcmlw
dHMgd2hpY2ggYXJlIGluc2VydGVkIGludG8gYSAKLSAgICAvLyB2aWV3bGVzcyBkb2N1bWVudCBi
dXQgdGhpcydsbCBkbyBmb3Igbm93LgotICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NzI3Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5mcmFtZSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB1cmwgPSBnZXRBdHRy
aWJ1dGUoc3JjQXR0cik7Ci0gICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fY2Fj
aGVkU2NyaXB0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQodXJsLCBz
Y3JpcHRDaGFyc2V0KCkpOwotICAgICAgICBpZiAobV9jYWNoZWRTY3JpcHQpCi0gICAgICAgICAg
ICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBkaXNwYXRjaEhUTUxFdmVudChlcnJvckV2ZW50LCB0cnVlLCBmYWxzZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGVyZSdzIGFuIGVtcHR5IHNjcmlwdCBub2Rl
LCB3ZSBzaG91bGRuJ3QgZXZhbHVhdGUgdGhlIHNjcmlwdAotICAgIC8vIGJlY2F1c2UgaWYgYSBz
Y3JpcHQgaXMgaW5zZXJ0ZWQgYWZ0ZXJ3YXJkcyAoYnkgc2V0dGluZyB0ZXh0IG9yIGlubmVyVGV4
dCkKLSAgICAvLyBpdCBzaG91bGQgYmUgZXZhbHVhdGVkLCBhbmQgZXZhbHVhdGVTY3JpcHQgb25s
eSBldmFsdWF0ZXMgYSBzY3JpcHQgb25jZS4KLSAgICBTdHJpbmcgc2NyaXB0U3RyaW5nID0gdGV4
dCgpOyAgICAKLSAgICBpZiAoIXNjcmlwdFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIGV2YWx1
YXRlU2NyaXB0KGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBzY3JpcHRTdHJpbmcpOworICAg
IFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KHRoaXMpOwogfQogCiB2b2lkIEhU
TUxTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKICAgICBIVE1MRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotCi0gICAgaWYgKG1fY2FjaGVkU2NyaXB0KSB7Ci0g
ICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgICAgIG1fY2Fj
aGVkU2NyaXB0ID0gMDsKLSAgICB9CisgICAgU2NyaXB0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSogbykKIHsKLSAgICBDYWNoZWRTY3JpcHQqIGNzID0gc3RhdGljX2Nhc3Q8Q2Fj
aGVkU2NyaXB0Kj4obyk7Ci0KLSAgICBBU1NFUlQoY3MgPT0gbV9jYWNoZWRTY3JpcHQpOwotCiAg
ICAgLy8gRXZhbHVhdGluZyB0aGUgc2NyaXB0IGNvdWxkIGxlYWQgdG8gYSBnYXJiYWdlIGNvbGxl
Y3Rpb24gd2hpY2gKICAgICAvLyBjYW4gZGVsZXRlIHRoZSBzY3JpcHQgZWxlbWVudCBzbyB3ZSBu
ZWVkIHRvIHByb3RlY3QgaXQuCiAgICAgUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90ZWN0
KHRoaXMpOwotICAgIAotICAgIGlmIChjcy0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBkaXNw
YXRjaEhUTUxFdmVudChlcnJvckV2ZW50LCB0cnVlLCBmYWxzZSk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIGV2YWx1YXRlU2NyaXB0KGNzLT51cmwoKSwgY3MtPnNjcmlwdCgpKTsKLSAgICAgICAgZGlz
cGF0Y2hIVE1MRXZlbnQobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOwotICAgIH0KLQotICAgIC8v
IHNjcmlwdCBldmFsdWF0aW9uIG1heSBoYXZlIGRlcmVmZmVkIGl0IGFscmVhZHkKLSAgICBpZiAo
bV9jYWNoZWRTY3JpcHQpIHsKLSAgICAgICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0
aGlzKTsKLSAgICAgICAgbV9jYWNoZWRTY3JpcHQgPSAwOwotICAgIH0KLX0KLQotYm9vbCBIVE1M
U2NyaXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpCi17Ci0gICAgLyoKLSAg
ICAgICAgIE1vemlsbGEgMS44IGFjY2VwdHMgamF2YXNjcmlwdDEuMCAtIGphdmFzY3JpcHQxLjcs
IGJ1dCBXaW5JRSA3IGFjY2VwdHMgb25seSBqYXZhc2NyaXB0MS4xIC0gamF2YXNjcmlwdDEuMy4K
LSAgICAgICAgIE1vemlsbGEgMS44IGFuZCBXaW5JRSA3IGJvdGggYWNjZXB0IGphdmFzY3JpcHQg
YW5kIGxpdmVzY3JpcHQuCi0gICAgICAgICBXaW5JRSA3IGFjY2VwdHMgZWNtYXNjcmlwdCBhbmQg
anNjcmlwdCwgYnV0IE1vemlsbGEgMS44IGRvZXNuJ3QuCi0gICAgICAgICBOZWl0aGVyIE1vemls
bGEgMS44IG5vciBXaW5JRSA3IGFjY2VwdCBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2Uu
Ci0gICAgICAgICBXZSB3YW50IHRvIGFjY2VwdCBhbGwgdGhlIHZhbHVlcyB0aGF0IGVpdGhlciBv
ZiB0aGVzZSBicm93c2VycyBhY2NlcHQsIGJ1dCBub3Qgb3RoZXIgdmFsdWVzLgotICAgICAqLwot
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgdmFsaWRMYW5ndWFnZXNbXSA9IHsKLSAgICAg
ICAgImphdmFzY3JpcHQiLAotICAgICAgICAiamF2YXNjcmlwdDEuMCIsCi0gICAgICAgICJqYXZh
c2NyaXB0MS4xIiwKLSAgICAgICAgImphdmFzY3JpcHQxLjIiLAotICAgICAgICAiamF2YXNjcmlw
dDEuMyIsCi0gICAgICAgICJqYXZhc2NyaXB0MS40IiwKLSAgICAgICAgImphdmFzY3JpcHQxLjUi
LAotICAgICAgICAiamF2YXNjcmlwdDEuNiIsCi0gICAgICAgICJqYXZhc2NyaXB0MS43IiwKLSAg
ICAgICAgImxpdmVzY3JpcHQiLAotICAgICAgICAiZWNtYXNjcmlwdCIsCi0gICAgICAgICJqc2Ny
aXB0IgotICAgIH07Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbGlkTGFuZ3VhZ2VzQ291
bnQgPSBzaXplb2YodmFsaWRMYW5ndWFnZXMpIC8gc2l6ZW9mKHZhbGlkTGFuZ3VhZ2VzWzBdKTsg
Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUgPSBnZXRBdHRyaWJ1dGUodHlwZUF0dHIp
OwotICAgIGlmICghdHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIGxvd2VyVHlwZSA9
IHR5cGUuc3RyaW5nKCkuc3RyaXBXaGl0ZVNwYWNlKCkubG93ZXIoKTsKLSAgICAgICAgaWYgKE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGxvd2VyVHlwZSkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSA9IGdldEF0dHJpYnV0ZShsYW5n
dWFnZUF0dHIpOwotICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmlu
ZyBsb3dlckxhbmd1YWdlID0gbGFuZ3VhZ2Uuc3RyaW5nKCkubG93ZXIoKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbGlkTGFuZ3VhZ2VzQ291bnQ7ICsraSkKLSAgICAgICAg
ICAgIGlmIChsb3dlckxhbmd1YWdlID09IHZhbGlkTGFuZ3VhZ2VzW2ldKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAv
LyBObyB0eXBlIG9yIGxhbmd1YWdlIGlzIHNwZWNpZmllZCwgc28gd2UgYXNzdW1lIHRoZSBzY3Jp
cHQgdG8gYmUgSmF2YVNjcmlwdAotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEhUTUxTY3Jp
cHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQpCi17Ci0gICAgaWYgKG1fZXZhbHVhdGVkKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgaWYgKCFzaG91bGRFeGVjdXRlQXNKYXZhU2NyaXB0KCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmIChm
cmFtZSkgewotICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkgewotICAg
ICAgICAgICAgbV9ldmFsdWF0ZWQgPSB0cnVlOwotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
c3RhcnRpbmcgbGluZSBudW1iZXIgd2lsbCBiZSBpbmNvcnJlY3QgZm9yIGV2YWx1YXRpb24gdHJp
Z2dlcmVkCi0gICAgICAgICAgICAvLyBmcm9tIGluc2VydGVkSW50b0RvY3VtZW50IG9yIGNoaWxk
cmVuQ2hhbmdlZC4KLSAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+ZXZhbHVhdGUodXJsLCAx
LCBzY3JpcHQpOwotICAgICAgICAgICAgRG9jdW1lbnQ6OnVwZGF0ZURvY3VtZW50c1JlbmRlcmlu
ZygpOwotICAgICAgICB9Ci0gICAgfQorICAgIFNjcmlwdEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KG8pOwogfQogCiBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OnRleHQoKSBjb25zdAogewotICAg
IFZlY3RvcjxVQ2hhcj4gdmFsOwotICAgIFRleHQqIGZpcnN0VGV4dE5vZGUgPSAwOwotICAgIGJv
b2wgZm91bmRNdWx0aXBsZVRleHROb2RlcyA9IGZhbHNlOwotICAgIAotICAgIGZvciAoTm9kZSog
biA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYg
KG4tPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKGZvdW5kTXVsdGlwbGVUZXh0Tm9k
ZXMpCi0gICAgICAgICAgICAgICAgYXBwZW5kKHZhbCwgc3RhdGljX2Nhc3Q8VGV4dCo+KG4pLT5k
YXRhKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoZmlyc3RUZXh0Tm9kZSkgewotICAgICAgICAg
ICAgICAgIGFwcGVuZCh2YWwsIGZpcnN0VGV4dE5vZGUtPmRhdGEoKSk7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kKHZhbCwgc3RhdGljX2Nhc3Q8VGV4dCo+KG4pLT5kYXRhKCkpOwotICAgICAgICAg
ICAgICAgIGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBmaXJzdFRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG4p
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgICAgICAKLSAgICBpZiAoZmly
c3RUZXh0Tm9kZSAmJiAhZm91bmRNdWx0aXBsZVRleHROb2RlcykKLSAgICAgICAgcmV0dXJuIGZp
cnN0VGV4dE5vZGUtPmRhdGEoKTsKLSAgICAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdCh2YWwp
OworICAgIHJldHVybiBTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250ZW50KHRoaXMpOwogfQogCiB2
b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdmFsdWUpCiB7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaW50IG51bUNoaWxkcmVuID0gY2hpbGROb2Rl
Q291bnQoKTsKLSAgICAKKwogICAgIGlmIChudW1DaGlsZHJlbiA9PSAxICYmIGZpcnN0Q2hpbGQo
KS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFRleHQgKj4oZmlyc3RDaGls
ZCgpKS0+c2V0RGF0YSh2YWx1ZSwgZWMpOworICAgICAgICBzdGF0aWNfY2FzdDxUZXh0Kj4oZmly
c3RDaGlsZCgpKS0+c2V0RGF0YSh2YWx1ZSwgZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKG51bUNoaWxkcmVuID4gMCkKICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4o
KTsKLSAgICAKKwogICAgIGFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKHZh
bHVlLmltcGwoKSksIGVjKTsKIH0KIApAQCAtMjg2LDcgKzExOCw3IEBAIFN0cmluZyBIVE1MU2Ny
aXB0RWxlbWVudDo6aHRtbEZvcigpIGNvbnMKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEh0bWxGb3IoY29uc3QgU3RyaW5nJiAvKnZhbHVlKi8p
Cit2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRIdG1sRm9yKGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgLy8gRE9NIExldmVsIDEgc2F5czogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCiB9CkBAIC0y
OTcsMTQgKzEyOSwxNCBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OmV2ZW50KCkgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEV2
ZW50KGNvbnN0IFN0cmluZyYgLyp2YWx1ZSovKQordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0
RXZlbnQoY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBET00gTGV2ZWwgMSBzYXlzOiByZXNlcnZl
ZCBmb3IgZnV0dXJlIHVzZS4KIH0KIAogU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50OjpjaGFyc2V0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGNoYXJzZXRBdHRyKTsKKyAgICBy
ZXR1cm4gY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCk7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1l
bnQ6OnNldENoYXJzZXQoY29uc3QgU3RyaW5nICZ2YWx1ZSkKQEAgLTMyNCw3ICsxNTYsNyBAQCB2
b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXREZWZlcihib29sIGRlCiAKIEtVUkwgSFRNTFNjcmlw
dEVsZW1lbnQ6OnNyYygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKGdldEF0dHJpYnV0ZShzcmNBdHRyKSk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVt
ZW50OjpzZXRTcmMoY29uc3QgU3RyaW5nICZ2YWx1ZSkKQEAgLTMzNCw3ICsxNjYsNyBAQCB2b2lk
IEhUTUxTY3JpcHRFbGVtZW50OjpzZXRTcmMoY29uc3QgU3RyCiAKIFN0cmluZyBIVE1MU2NyaXB0
RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZSh0eXBlQXR0
cik7CisgICAgcmV0dXJuIHR5cGVBdHRyaWJ1dGVWYWx1ZSgpOwogfQogCiB2b2lkIEhUTUxTY3Jp
cHRFbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyAmdmFsdWUpCkBAIC0zNDQsMTUgKzE3Niwx
MiBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0CiAKIFN0cmluZyBI
VE1MU2NyaXB0RWxlbWVudDo6c2NyaXB0Q2hhcnNldCgpIGNvbnN0CiB7Ci0gICAgLy8gRmlyc3Qg
d2UgdHJ5IHRvIGdldCBlbmNvZGluZyBmcm9tIGNoYXJzZXQgYXR0cmlidXRlLgotICAgIFN0cmlu
ZyBjaGFyc2V0ID0gZ2V0QXR0cmlidXRlKGNoYXJzZXRBdHRyKS5zdHJpbmcoKS5zdHJpcFdoaXRl
U3BhY2UoKTsKLSAgICAvLyBJZiBjaGFyc2V0IGhhcyBub3QgYmVlbiBkZWNsYXJlZCBpbiBzY3Jp
cHQgdGFnLCBmYWxsIGJhY2sKLSAgICAvLyB0byBmcmFtZSBlbmNvZGluZy4KLSAgICBpZiAoY2hh
cnNldC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCkpCi0gICAgICAgICAgICBjaGFyc2V0ID0gZnJhbWUtPmxvYWRlcigpLT5lbmNvZGlu
ZygpOwotICAgIH0KLSAgICByZXR1cm4gY2hhcnNldDsKKyAgICByZXR1cm4gU2NyaXB0RWxlbWVu
dDo6c2NyaXB0Q2hhcnNldCh0aGlzKTsKK30KKwordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQorewor
ICAgIHJldHVybiBTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdCh0aGlzLCB1cmwsIHNjcmlw
dCk7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmdldFN1YnJlc291cmNlQXR0cmlidXRl
U3RyaW5ncyhWZWN0b3I8U3RyaW5nPiYgdXJscykgY29uc3QKQEAgLTM2MCw0ICsxODksMzQgQEAg
dm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6Z2V0U3VicmVzb3VyY2VBdAogICAgIHVybHMuYXBwZW5k
KHNyYygpLnN0cmluZygpKTsKIH0KIAorU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50Ojpzb3VyY2VB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzcmNBdHRy
KS5zdHJpbmcoKTsKK30KKworU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50OjpjaGFyc2V0QXR0cmli
dXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIp
LnN0cmluZygpOzsKK30KKworU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50Ojp0eXBlQXR0cmlidXRl
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpLnN0cmlu
ZygpOzsKK30KKworU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50OjpsYW5ndWFnZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGxhbmd1YWdlQXR0cikuc3Ry
aW5nKCk7Cit9CisKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KCkK
K3sKKyAgICBkaXNwYXRjaEhUTUxFdmVudChsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7Cit9CisK
K3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCit7CisgICAgZGlz
cGF0Y2hIVE1MRXZlbnQoZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOworfQorCiB9CkluZGV4OiBo
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5oCShyZXZpc2lvbiAzNTcyMikKKysrIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTQgKzI0LDE1IEBACiAjaWZuZGVmIEhUTUxTY3JpcHRF
bGVtZW50X2gKICNkZWZpbmUgSFRNTFNjcmlwdEVsZW1lbnRfaAogCi0jaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRTY3Jp
cHQ7CiAKLWNsYXNzIEhUTUxTY3JpcHRFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFNjcmlwdEVs
ZW1lbnQgewogcHVibGljOgogICAgIEhUTUxTY3JpcHRFbGVtZW50KERvY3VtZW50Kik7CiAgICAg
fkhUTUxTY3JpcHRFbGVtZW50KCk7CkBAIC00OCwxMiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKLSAgICB2b2lk
IHNldENyZWF0ZWRCeVBhcnNlcihib29sIGNyZWF0ZWRCeVBhcnNlcikgeyBtX2NyZWF0ZWRCeVBh
cnNlciA9IGNyZWF0ZWRCeVBhcnNlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKTsKIAotICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwotICAg
IHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKLQogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0
IFN0cmluZyYpOwogCkBAIC04MCwxMCArNzgsMTYgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBnZXRTdWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mKSBj
b25zdDsKIAotcHJpdmF0ZToKLSAgICBDYWNoZWRTY3JpcHQqIG1fY2FjaGVkU2NyaXB0OwotICAg
IGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7Ci0gICAgYm9vbCBtX2V2YWx1YXRlZDsKKwl2aXJ0dWFs
IHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdHlwZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OworCisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRXJyb3JFdmVudCgpOwogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRleDogc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2
aXNpb24gMzU3MjIpCisrKyBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDYgKzY4LDQxIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6Z2V0U3VicmVzb3VyY2VB
dHQKICAgICB1cmxzLmFwcGVuZChocmVmKCkpOwogfQogCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6
OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkK
K3sKK30KKworU3RyaW5nIFNWR1NjcmlwdEVsZW1lbnQ6OnNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaHJlZigpOworfQorCitTdHJpbmcgU1ZHU2NyaXB0RWxlbWVu
dDo6Y2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBTVkdTY3JpcHRFbGVtZW50Ojp0eXBlQXR0cmlidXRlVmFsdWUoKSBjb25z
dAoreworICAgIHJldHVybiB0eXBlKCk7Cit9CisKK1N0cmluZyBTVkdTY3JpcHRFbGVtZW50Ojps
YW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQoreworICAgIC8v
IFRPRE8hCisgICAgLy8gZGlzcGF0Y2hTVkdFdmVudChsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7
Cit9CisKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKK3sKKyAg
ICAvLyBUT0RPIQorICAgIC8vIGRpc3BhdGNoU1ZHRXZlbnQoZXJyb3JFdmVudCwgdHJ1ZSwgZmFs
c2UpOworfQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IHN2Zy9TVkdTY3JpcHRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24g
MzU3MjIpCisrKyBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
NSArMjQsMTcgQEAKICNkZWZpbmUgU1ZHU2NyaXB0RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZH
KQorI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdTY3Jp
cHRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKKyAgICBjbGFzcyBTVkdTY3Jp
cHRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICwgcHVibGljIFNWR1VSSVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLCBwdWJsaWMgU2NyaXB0RWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdT
Y3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2
aXJ0dWFsIH5TVkdTY3JpcHRFbGVtZW50KCk7CkBAIC00Myw5ICs0NSwxOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUgKmF0dHIpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VicmVzb3VyY2VB
dHRyaWJ1dGVTdHJpbmdzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAKKyAgICAgICAgdmlydHVh
bCB2b2lkIGV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCk7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKKyAgICAgICAgdmly
dHVhbCBTdHJpbmcgc291cmNlQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
U3RyaW5nIHR5cGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoTG9hZEV2ZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVycm9y
RXZlbnQoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtX3R5cGU7CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22784</attachid>
            <date>2008-08-13 18:42:43 -0700</date>
            <delta_ts>2008-08-13 19:00:42 -0700</delta_ts>
            <desc>Patch 1/2 - v2: Refactor HTMLScriptElement code in common base class</desc>
            <filename>RefactorScriptCode.diff</filename>
            <type>text/plain</type>
            <size>54560</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTc0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTAgQEAKKzIwMDgtMDgtMTMgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZWZhY3RvciBIVE1MU2NyaXB0RWxlbWVudCdzIGNvZGUgaW50byBhIGNvbW1vbiBiYXNl
IGNsYXNzOiBTY3JpcHRFbGVtZW50LgorICAgICAgICBTVkdTY3JpcHRFbGVtZW50IHdpbGwgYmUg
Y29udmVydGVkIHRvIHVzZSBTY3JpcHRFbGVtZW50IGluIGEgZm9sbG93LXVwIHBhdGNoLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyByZXNvbHZlcyBjb2RlIGR1cGxpY2F0aW9ucyBhbmQgYWxsb3dz
IHVzIHRvIGNvbXBsZXRseSByZXBsYWNlIHRoZSBvbGQKKyAgICAgICAgU1ZHU2NyaXB0RWxlbWVu
dCAod2hpY2ggZG9lc24ndCB1c2UgQ2FjaGVkU2NyaXB0LCBubyBkeW5hbWljIGluamVjdGVkIHNj
cmlwdHMgZXRjLi4pCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHlldCwgYXMgU1ZH
U2NyaXB0RWxlbWVudCBkb2Vzbid0IHlldCB1c2UgdGhlIG5ldyBiYXNlIGNsYXNzLgorCisgICAg
ICAgICogV2ViQ29yZS5wcm86IEFkZCBuZXcgU2NyaXB0RWxlbWVudC5jcHAgdG8gYnVpbGQuCisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogV2Vi
Q29yZVNvdXJjZXMuYmtsOiBEdXR0by4KKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
IEFkZGVkLiAxOjEgYmFzZWQgb24gSFRNTFNjcmlwdEVsZW1lbnQKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFbGVtZW50OjpoYW5kbGVTb3VyY2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWxpZEphdmFTY3JpcHRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50
RGF0YTo6U2NyaXB0RWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVu
dERhdGE6On5TY3JpcHRFbGVtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50RGF0YTo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50
RGF0YTo6ZXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudERh
dGE6OnN0b3BMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0
YTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudERhdGE6
Omlnbm9yZXNMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0
YTo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50RGF0YTo6c2NyaXB0Q2hhcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50RGF0YTo6c2NyaXB0Q29udGVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6On5TY3JpcHRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjplbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEVsZW1lbnREYXRhOjpjcmVhdGVkQnlQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudERhdGE6OnNldENyZWF0ZWRCeVBhcnNlcik6CisgICAgICAgICogZG9t
L1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NjcmlwdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FzdFRvU2NyaXB0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpldmVudHVhbGx5TWFya0FzUGFyc2VyQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxU
b2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXpl
cjo6ZW5kRWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJy
b3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjppbnNlcnRFcnJvck1l
c3NhZ2VCbG9jayk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6IFJlZmFj
dG9yZWQgY29kZSwgcHVzaGVkIG1vc3QgY29kZSBkb3duIHRvIFNjcmlwdEVsZW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6SFRNTFNjcmlwdEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6On5IVE1MU2NyaXB0RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnNldENyZWF0ZWRCeVBhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6
cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVu
dDo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0SHRtbEZvcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2V0RXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNoYXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNjcmlwdEVsZW1lbnQ6OnNyYyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVu
dDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2NyaXB0Q2hh
cnNldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6c291cmNlQXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNoYXJzZXRBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6dHlwZUF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpsYW5n
dWFnZUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50
OjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVu
dDo6ZGlzcGF0Y2hFcnJvckV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOiBJbmhlcml0IGZyb20gU2Ny
aXB0RWxlbWVudCwgZG9uJ3QgYWN0dWFsbHkgdXNlIGl0IHlldC4KKyAgICAgICAgKiBzdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpT
VkdTY3JpcHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnNj
cmlwdENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6c291cmNl
QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6Y2hh
cnNldEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6
OnR5cGVBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50
OjpsYW5ndWFnZUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVs
ZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVs
ZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnNldENyZWF0ZWRCeVBh
cnNlcik6CisKIDIwMDgtMDgtMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIEF0dGVtcHQgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkLCBubyByZXZpZXcuCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8J
KHJldmlzaW9uIDM1NzQwKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpA
QCAtNTM2LDYgKzUzNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmNw
cCBcCiAgICAgZG9tL1JhbmdlLmNwcCBcCiAgICAgZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmNwcCBcCisgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwIFwKICAgICBkb20vU2VsZWN0b3JOb2Rl
TGlzdC5jcHAgXAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAgXAogICAgIGRvbS9TdHlsZWRF
bGVtZW50LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzU3NDApCisrKyBXZWJD
b3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiw3IEBA
IFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgZG9tL1F1
YWxpZmllZE5hbWUuY3BwCiAgICAgICAgIGRvbS9SYW5nZS5jcHAKICAgICAgICAgZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmNwcAorICAgICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAKICAg
ICAgICAgZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCiAgICAgICAgIGRvbS9TdGF0aWNOb2RlTGlz
dC5jcHAKICAgICAgICAgZG9tL1N0eWxlRWxlbWVudC5jcHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzU3NDApCisrKyBXZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQyOCw2ICsxMDQyOCwy
MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cU2NyaXB0RWxlbWVudC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQorCQkJCQlOYW1lPSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6
YXRpb249InRydWUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTY3JpcHRFbGVtZW50
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cU2VsZWN0b3JOb2RlTGlzdC5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDM1NzQwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKIAkJMDY2Qzc3MzEwQUI2MDNGRDAw
MjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjZDNzcyRjBBQjYwM0ZEMDAyMzhDQzQgLyogUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuaCAqLzsgfTsKIAkJMDZFODFFRDcwQUI1RDVFOTAwQzg3ODM3
IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5oICovOyB9OwogCQkwNkU4MUVFQzBBQjVEQTk3MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLzsgfTsKKwkJMDhBNDg0NzcwRTUyNzJDNTAw
QzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhBNDg0NzUwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1l
bnQuY3BwICovOyB9OworCQkwOEE0ODQ3ODBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhBNDg0
NzYwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLzsgfTsKIAkJMDhFNEZFNDYw
RTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAv
KiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgKi87IH07CiAJCTBBNDg0NDk5MENBNDRDQjIwMEI3QkQ0
OCAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NjAyOEYwRTRC
NzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTYwMjhEMEU0Qjc2NTgwMDY1QjAzOCAvKiBSZW5kZXJN
YXJxdWVlLmggKi87IH07CkBAIC00NTQzLDYgKzQ1NDUsOCBAQAogCQkwNjZDNzcyRjBBQjYwM0ZE
MDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA2RTgxRUQ2MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2
RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEE0ODQ3NTBF
NTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDhBNDg0NzYwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwOEU0RkU0NTBFMkJENDE0MDBGNENBRTAgLyogSlNTVkdMZW5n
dGhDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdM
ZW5ndGhDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQTQ4NDQ5ODBD
QTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWFycXVlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMzMzEsNiArMTMzMzUsOCBAQAogCQkJCUQyM0NBNTQ4MEFCMEU5ODMwMDUxMDhB
NSAvKiBSYW5nZUV4Y2VwdGlvbi5pZGwgKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUw
IC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3
MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQkwOEE0ODQ3NTBF
NTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgKi8sCisJCQkJMDhBNDg0NzYwRTUy
NzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLywKIAkJCQlCQzdGQTY4MDBEMUYxNjc5
MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQkM3RkE2N0YwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCAqLywKIAkJCQlCQzdGQTYyQzBEMUYwRUZG
MDBEQjIyQTkgLyogU3RhdGljTm9kZUxpc3QuY3BwICovLApAQCAtMTUzOTQsNiArMTU0MDAsNyBA
QAogCQkJCTMxQzBGRjRCMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVu
dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkY0QzBFNENFRkREMDA3RDZGRTUg
LyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkY0
RTBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAorCQkJCTA4QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyogUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CkBAIC0xNzE3OCw2ICsxNzE4NSw3IEBACiAJCQkJMzFDMEZGM0YwRTRD
RUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxQzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRBbmltYXRpb25FdmVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxQzBGRjREMEU0Q0VGREQwMDdENkZFNSAvKiBET01X
ZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQkwOEE0ODQ3NzBFNTI3
MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEZB
NkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RWxlbWVudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiRG9j
TG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5j
bHVkZSAiVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU2NyaXB0RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoU2NyaXB0RWxlbWVudERhdGEmIGRhdGEsIGNvbnN0IFN0
cmluZyYgc291cmNlVXJsKQoreworICAgIGlmIChkYXRhLmNyZWF0ZWRCeVBhcnNlcigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIXNvdXJjZVVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ZGF0YS5yZXF1ZXN0U2NyaXB0KHNvdXJjZVVybCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBJZiB0aGVyZSdzIGFuIGVtcHR5IHNjcmlwdCBub2RlLCB3ZSBzaG91bGRuJ3QgZXZh
bHVhdGUgdGhlIHNjcmlwdAorICAgIC8vIGJlY2F1c2UgaWYgYSBzY3JpcHQgaXMgaW5zZXJ0ZWQg
YWZ0ZXJ3YXJkcyAoYnkgc2V0dGluZyB0ZXh0IG9yIGlubmVyVGV4dCkKKyAgICAvLyBpdCBzaG91
bGQgYmUgZXZhbHVhdGVkLCBhbmQgZXZhbHVhdGVTY3JpcHQgb25seSBldmFsdWF0ZXMgYSBzY3Jp
cHQgb25jZS4KKyAgICBkYXRhLmV2YWx1YXRlU2NyaXB0KGRhdGEuZWxlbWVudCgpLT5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKSwgZGF0YS5zY3JpcHRDb250ZW50KCkpOworfQorCit2b2lkIFNj
cmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoU2NyaXB0RWxlbWVudERhdGEmIGRhdGEp
Cit7CisgICAgLy8gRXZlbnR1YWxseSBzdG9wIGxvYWRpbmcgYW55IG5vdC15ZXQtZmluaXNoZWQg
Y29udGVudAorICAgIGRhdGEuc3RvcExvYWRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU2NyaXB0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKFNjcmlwdEVsZW1lbnREYXRhJiBkYXRhKQoreworICAgIGlm
IChkYXRhLmNyZWF0ZWRCeVBhcnNlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBFbGVtZW50
KiBlbGVtZW50ID0gZGF0YS5lbGVtZW50KCk7CisKKyAgICAvLyBJZiBhIG5vZGUgaXMgaW5zZXJ0
ZWQgYXMgYSBjaGlsZCBvZiB0aGUgc2NyaXB0IGVsZW1lbnQKKyAgICAvLyBhbmQgdGhlIHNjcmlw
dCBlbGVtZW50IGhhcyBiZWVuIGluc2VydGVkIGluIHRoZSBkb2N1bWVudAorICAgIC8vIHdlIGV2
YWx1YXRlIHRoZSBzY3JpcHQuCisgICAgaWYgKGVsZW1lbnQtPmluRG9jdW1lbnQoKSAmJiBlbGVt
ZW50LT5maXJzdENoaWxkKCkpCisgICAgICAgIGRhdGEuZXZhbHVhdGVTY3JpcHQoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIGRhdGEuc2NyaXB0Q29udGVudCgpKTsKK30KKwor
dm9pZCBTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oU2NyaXB0RWxlbWVudERh
dGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgc291cmNlVXJsKQoreworICAgIC8vIFRoZSBwYXJzZXIg
anVzdCByZWFjaGVkIDwvc2NyaXB0Pi4gSWYgd2UgaGF2ZSBubyBzcmMgYW5kIG5vIHRleHQsCisg
ICAgLy8gYWxsb3cgZHluYW1pYyBsb2FkaW5nIGxhdGVyLgorICAgIGlmIChzb3VyY2VVcmwuaXNF
bXB0eSgpICYmIGRhdGEuc2NyaXB0Q29udGVudCgpLmlzRW1wdHkoKSkKKyAgICAgICAgZGF0YS5z
ZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOworfQorCit2b2lkIFNjcmlwdEVsZW1lbnQ6OmhhbmRs
ZVNvdXJjZUF0dHJpYnV0ZShTY3JpcHRFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVcmwpCit7CisgICAgaWYgKGRhdGEuaWdub3Jlc0xvYWRSZXF1ZXN0KCkgfHwgc291cmNl
VXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGF0YS5yZXF1ZXN0U2NyaXB0
KHNvdXJjZVVybCk7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbgorc3RhdGljIGJvb2wgaXNWYWxp
ZEphdmFTY3JpcHRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQoreworICAgIHN0YXRp
YyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBD
YXNlRm9sZGluZ0hhc2g+IGxhbmd1YWdlczsKKworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAg
ICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICBsYW5ndWFnZXMuYWRk
KCJqYXZhc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQxLjAiKTsK
KyAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuMSIpOworICAgICAgICBsYW5ndWFn
ZXMuYWRkKCJqYXZhc2NyaXB0MS4yIik7CisgICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3Jp
cHQxLjMiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNCIpOworICAgICAg
ICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0MS41Iik7CisgICAgICAgIGxhbmd1YWdlcy5hZGQo
ImphdmFzY3JpcHQxLjYiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdDEuNyIp
OworICAgICAgICBsYW5ndWFnZXMuYWRkKCJsaXZlc2NyaXB0Iik7CisgICAgICAgIGxhbmd1YWdl
cy5hZGQoImVjbWFzY3JpcHQiKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFkZCgianNjcmlwdCIpOyAg
ICAgICAgICAgICAgICAKKworICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGxhbmd1YWdlcy5jb250YWlucyhsYW5ndWFnZSk7Cit9CisKKy8vIFNjcmlwdEVs
ZW1lbnREYXRhCitTY3JpcHRFbGVtZW50RGF0YTo6U2NyaXB0RWxlbWVudERhdGEoU2NyaXB0RWxl
bWVudCogc2NyaXB0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1fc2NyaXB0RWxl
bWVudChzY3JpcHRFbGVtZW50KQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX2Nh
Y2hlZFNjcmlwdCgwKQorICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoZmFsc2UpCisgICAgLCBtX2V2
YWx1YXRlZChmYWxzZSkKK3sKKyAgICBBU1NFUlQobV9zY3JpcHRFbGVtZW50KTsKKyAgICBBU1NF
UlQobV9lbGVtZW50KTsKK30KKworU2NyaXB0RWxlbWVudERhdGE6On5TY3JpcHRFbGVtZW50RGF0
YSgpCit7CisgICAgc3RvcExvYWRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU2NyaXB0RWxlbWVudERh
dGE6OnJlcXVlc3RTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpCit7CisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpOworCisgICAgLy8gRklYTUU6IEV2
ZW50dWFsbHkgd2UnZCBsaWtlIHRvIGV2YWx1YXRlIHNjcmlwdHMgd2hpY2ggYXJlIGluc2VydGVk
IGludG8gYSAKKyAgICAvLyB2aWV3bGVzcyBkb2N1bWVudCBidXQgdGhpcydsbCBkbyBmb3Igbm93
LgorICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzI3
CisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKCFtX2NhY2hlZFNjcmlwdCk7CisgICAgbV9jYWNoZWRTY3JpcHQgPSBkb2N1bWVudC0+ZG9j
TG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc291cmNlVXJsLCBzY3JpcHRDaGFyc2V0KCkpOworCisg
ICAgaWYgKG1fY2FjaGVkU2NyaXB0KSB7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGll
bnQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3NjcmlwdEVsZW1lbnQt
PmRpc3BhdGNoRXJyb3JFdmVudCgpOworfQorCit2b2lkIFNjcmlwdEVsZW1lbnREYXRhOjpldmFs
dWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50
KQoreworICAgIGlmIChtX2V2YWx1YXRlZCB8fCBjb250ZW50LmlzRW1wdHkoKSB8fCAhc2hvdWxk
RXhlY3V0ZUFzSmF2YVNjcmlwdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoRnJhbWUq
IGZyYW1lID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmICgh
ZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBtX2V2YWx1YXRlZCA9IHRydWU7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhcnRp
bmcgbGluZSBudW1iZXIgd2lsbCBiZSBpbmNvcnJlY3QgZm9yIGV2YWx1YXRpb24gdHJpZ2dlcmVk
CisgICAgICAgIC8vIGZyb20gaW5zZXJ0ZWRJbnRvRG9jdW1lbnQgb3IgY2hpbGRyZW5DaGFuZ2Vk
LgorICAgICAgICBmcmFtZS0+c2NyaXB0KCktPmV2YWx1YXRlKHNvdXJjZVVybCwgMSwgY29udGVu
dCk7CisgICAgICAgIERvY3VtZW50Ojp1cGRhdGVEb2N1bWVudHNSZW5kZXJpbmcoKTsKKyAgICB9
Cit9CisKK3ZvaWQgU2NyaXB0RWxlbWVudERhdGE6OnN0b3BMb2FkUmVxdWVzdCgpCit7CisgICAg
aWYgKG1fY2FjaGVkU2NyaXB0KSB7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5yZW1vdmVDbGll
bnQodGhpcyk7CisgICAgICAgIG1fY2FjaGVkU2NyaXB0ID0gMDsKKyAgICB9Cit9CisKK3ZvaWQg
U2NyaXB0RWxlbWVudERhdGE6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBvKQorewor
ICAgIENhY2hlZFNjcmlwdCogY3MgPSBzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHQqPihvKTsKKyAg
ICBBU1NFUlQoY3MgPT0gbV9jYWNoZWRTY3JpcHQpOworCisgICAgaWYgKGNzLT5lcnJvck9jY3Vy
cmVkKCkpCisgICAgICAgIG1fc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwcm90ZWN0b3IobV9lbGVtZW50KTsK
KyAgICAgICAgZXZhbHVhdGVTY3JpcHQoY3MtPnVybCgpLCBjcy0+c2NyaXB0KCkpOworICAgICAg
ICBtX3NjcmlwdEVsZW1lbnQtPmRpc3BhdGNoTG9hZEV2ZW50KCk7CisgICAgfQorCisgICAgc3Rv
cExvYWRSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU2NyaXB0RWxlbWVudERhdGE6Omlnbm9yZXNMb2Fk
UmVxdWVzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXZhbHVhdGVkIHx8IG1fY2FjaGVkU2Ny
aXB0IHx8IG1fY3JlYXRlZEJ5UGFyc2VyIHx8ICFtX2VsZW1lbnQtPmluRG9jdW1lbnQoKTsKK30K
KworYm9vbCBTY3JpcHRFbGVtZW50RGF0YTo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpIGNv
bnN0Cit7CisgICAgLyoKKyAgICAgICAgIE1vemlsbGEgMS44IGFjY2VwdHMgamF2YXNjcmlwdDEu
MCAtIGphdmFzY3JpcHQxLjcsIGJ1dCBXaW5JRSA3IGFjY2VwdHMgb25seSBqYXZhc2NyaXB0MS4x
IC0gamF2YXNjcmlwdDEuMy4KKyAgICAgICAgIE1vemlsbGEgMS44IGFuZCBXaW5JRSA3IGJvdGgg
YWNjZXB0IGphdmFzY3JpcHQgYW5kIGxpdmVzY3JpcHQuCisgICAgICAgICBXaW5JRSA3IGFjY2Vw
dHMgZWNtYXNjcmlwdCBhbmQganNjcmlwdCwgYnV0IE1vemlsbGEgMS44IGRvZXNuJ3QuCisgICAg
ICAgICBOZWl0aGVyIE1vemlsbGEgMS44IG5vciBXaW5JRSA3IGFjY2VwdCBsZWFkaW5nIG9yIHRy
YWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICAgICBXZSB3YW50IHRvIGFjY2VwdCBhbGwgdGhlIHZh
bHVlcyB0aGF0IGVpdGhlciBvZiB0aGVzZSBicm93c2VycyBhY2NlcHQsIGJ1dCBub3Qgb3RoZXIg
dmFsdWVzLgorICAgICAqLworICAgIFN0cmluZyB0eXBlID0gbV9zY3JpcHRFbGVtZW50LT50eXBl
QXR0cmlidXRlVmFsdWUoKTsKKyAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUodHlwZS5z
dHJpcFdoaXRlU3BhY2UoKS5sb3dlcigpKTsKKworICAgIFN0cmluZyBsYW5ndWFnZSA9IG1fc2Ny
aXB0RWxlbWVudC0+bGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpOworICAgIGlmICghbGFuZ3VhZ2Uu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaXNWYWxpZEphdmFTY3JpcHRMYW5ndWFnZShsYW5n
dWFnZSk7CisKKyAgICAvLyBObyB0eXBlIG9yIGxhbmd1YWdlIGlzIHNwZWNpZmllZCwgc28gd2Ug
YXNzdW1lIHRoZSBzY3JpcHQgdG8gYmUgSmF2YVNjcmlwdAorICAgIHJldHVybiB0cnVlOworfQor
CitTdHJpbmcgU2NyaXB0RWxlbWVudERhdGE6OnNjcmlwdENoYXJzZXQoKSBjb25zdAoreworICAg
IC8vIEZpcnN0IHdlIHRyeSB0byBnZXQgZW5jb2RpbmcgZnJvbSBjaGFyc2V0IGF0dHJpYnV0ZS4K
KyAgICBTdHJpbmcgY2hhcnNldCA9IG1fc2NyaXB0RWxlbWVudC0+Y2hhcnNldEF0dHJpYnV0ZVZh
bHVlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisKKyAgICAvLyBJZiBjaGFyc2V0IGhhcyBub3QgYmVl
biBkZWNsYXJlZCBpbiBzY3JpcHQgdGFnLCBmYWxsIGJhY2sgdG8gZnJhbWUgZW5jb2RpbmcuCisg
ICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBt
X2VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgICAgICBjaGFyc2V0ID0gZnJh
bWUtPmxvYWRlcigpLT5lbmNvZGluZygpOworICAgIH0KKworICAgIHJldHVybiBjaGFyc2V0Owor
fQorCitTdHJpbmcgU2NyaXB0RWxlbWVudERhdGE6OnNjcmlwdENvbnRlbnQoKSBjb25zdAorewor
ICAgIFZlY3RvcjxVQ2hhcj4gdmFsOworICAgIFRleHQqIGZpcnN0VGV4dE5vZGUgPSAwOworICAg
IGJvb2wgZm91bmRNdWx0aXBsZVRleHROb2RlcyA9IGZhbHNlOworCisgICAgZm9yIChOb2RlKiBu
ID0gbV9lbGVtZW50LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmICghbi0+aXNUZXh0Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgVGV4dCogdCA9IHN0YXRpY19jYXN0PFRleHQqPihuKTsKKyAgICAgICAgaWYgKGZvdW5k
TXVsdGlwbGVUZXh0Tm9kZXMpCisgICAgICAgICAgICBhcHBlbmQodmFsLCB0LT5kYXRhKCkpOwor
ICAgICAgICBlbHNlIGlmIChmaXJzdFRleHROb2RlKSB7CisgICAgICAgICAgICBhcHBlbmQodmFs
LCBmaXJzdFRleHROb2RlLT5kYXRhKCkpOworICAgICAgICAgICAgYXBwZW5kKHZhbCwgdC0+ZGF0
YSgpKTsKKyAgICAgICAgICAgIGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMgPSB0cnVlOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGZpcnN0VGV4dE5vZGUgPSB0OworICAgIH0KKworICAgIGlm
IChmaXJzdFRleHROb2RlICYmICFmb3VuZE11bHRpcGxlVGV4dE5vZGVzKQorICAgICAgICByZXR1
cm4gZmlyc3RUZXh0Tm9kZS0+ZGF0YSgpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQodmFs
KTsKK30KKworfQpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNpZm5kZWYgU2NyaXB0RWxlbWVudF9oCisjZGVmaW5lIFNjcmlwdEVsZW1lbnRfaAor
CisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDYWNoZWRTY3JpcHQ7CitjbGFzcyBFbGVtZW50OworY2xhc3MgU2NyaXB0RWxl
bWVudERhdGE7CisKK2NsYXNzIFNjcmlwdEVsZW1lbnQgeworcHVibGljOgorICAgIFNjcmlwdEVs
ZW1lbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5TY3JpcHRFbGVtZW50KCkgeyB9CisKKyAgICB2aXJ0
dWFsIFN0cmluZyBzY3JpcHRDb250ZW50KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJp
bmcgc291cmNlQXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
Y2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHR5
cGVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFn
ZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
TG9hZEV2ZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgb3VyIHBh
cmVudCBjbGFzc2VzLgorICAgIHN0YXRpYyB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KFNjcmlw
dEVsZW1lbnREYXRhJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpOworICAgIHN0YXRpYyB2b2lk
IHJlbW92ZWRGcm9tRG9jdW1lbnQoU2NyaXB0RWxlbWVudERhdGEmKTsKKyAgICBzdGF0aWMgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoU2NyaXB0RWxlbWVudERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBm
aW5pc2hQYXJzaW5nQ2hpbGRyZW4oU2NyaXB0RWxlbWVudERhdGEmLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVybCk7CisgICAgc3RhdGljIHZvaWQgaGFuZGxlU291cmNlQXR0cmlidXRlKFNjcmlwdEVs
ZW1lbnREYXRhJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpOworfTsKKworLy8gSFRNTC9TVkdT
Y3JpcHRFbGVtZW50IGhvbGQgdGhpcyBzdHJ1Y3QgYXMgbWVtYmVyIHZhcmlhYmxlCisvLyBhbmQg
cGFzcyBpdCB0byB0aGUgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgaW4gU2NyaXB0RWxlbWVudAor
Y2xhc3MgU2NyaXB0RWxlbWVudERhdGEgOiBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBTY3JpcHRFbGVtZW50RGF0YShTY3JpcHRFbGVtZW50KiwgRWxlbWVudCop
OworICAgIHZpcnR1YWwgflNjcmlwdEVsZW1lbnREYXRhKCk7CisKKyAgICBib29sIGlnbm9yZXNM
b2FkUmVxdWVzdCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgp
IGNvbnN0OworCisgICAgU3RyaW5nIHNjcmlwdENvbnRlbnQoKSBjb25zdDsKKyAgICBTdHJpbmcg
c2NyaXB0Q2hhcnNldCgpIGNvbnN0OworCisgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudDsgfQorICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jcmVhdGVkQnlQYXJzZXI7IH0KKyAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihi
b29sIHZhbHVlKSB7IG1fY3JlYXRlZEJ5UGFyc2VyID0gdmFsdWU7IH0KKworICAgIHZvaWQgcmVx
dWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCk7CisgICAgdm9pZCBldmFsdWF0ZVNj
cmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKyAg
ICB2b2lkIHN0b3BMb2FkUmVxdWVzdCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworCitwcml2YXRlOgorICAgIFNjcmlwdEVs
ZW1lbnQqIG1fc2NyaXB0RWxlbWVudDsKKyAgICBFbGVtZW50KiBtX2VsZW1lbnQ7CisgICAgQ2Fj
aGVkU2NyaXB0KiBtX2NhY2hlZFNjcmlwdDsKKyAgICBib29sIG1fY3JlYXRlZEJ5UGFyc2VyOwor
ICAgIGJvb2wgbV9ldmFsdWF0ZWQ7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9k
b20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6
ZXIuY3BwCShyZXZpc2lvbiAzNTc0MCkKKysrIFdlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCkBAIC02NSw4ICs2Niw4IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHU2NyaXB0RWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgotI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNlbmRpZgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNzQsNyArNzUsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsK
LXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGNvbnN0IGludCBtYXhFcnJvcnMgPSAyNTsK
IApAQCAtNTQzLDYgKzU0MywzMSBAQCBRU3RyaW5nIEVudGl0eVJlc29sdmVyOjpyZXNvbHZlVW5k
ZWNsYXJlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2lubGluZSBi
b29sIGlzU2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2NyaXB0VGFnKQorI2lmIEVOQUJMRShTVkcpCisg
ICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykKKyNlbmRp
ZgorICAgICAgICA7Cit9CisKK2lubGluZSBTY3JpcHRFbGVtZW50KiBjYXN0VG9TY3JpcHRFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGlzU2NyaXB0RWxlbWVudChlbGVt
ZW50KSk7CisKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRh
ZykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0RWxlbWVudCo+KGVsZW1l
bnQpOworCisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6c2NyaXB0VGFnKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1NjcmlwdEVs
ZW1lbnQqPihlbGVtZW50KTsKKyNlbmRpZgorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIFhNTFRva2VuaXplcjo6WE1MVG9rZW5pemVyKERvY3VtZW50KiBf
ZG9jLCBGcmFtZVZpZXcqIF92aWV3KQogICAgIDogbV9kb2MoX2RvYykKICAgICAsIG1fdmlldyhf
dmlldykKQEAgLTgxMCw2ICs4MzUsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZUVsZW1l
bnRBdHRyaWJ1dAogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgZXZlbnR1YWxseU1hcmtBc1BhcnNl
ckNyZWF0ZWQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnNjcmlwdFRhZykpCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRF
bGVtZW50Kj4oZWxlbWVudCktPnNldENyZWF0ZWRCeVBhcnNlcih0cnVlKTsKKyNpZiBFTkFCTEUo
U1ZHKQorICAgIGVsc2UgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRh
ZykpCisgICAgICAgIHN0YXRpY19jYXN0PFNWR1NjcmlwdEVsZW1lbnQqPihlbGVtZW50KS0+c2V0
Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOworI2VuZGlmCisgICAgZWxzZSBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnN0eWxlVGFnKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFN0
eWxlRWxlbWVudCo+KGVsZW1lbnQpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CisjaWYgRU5B
QkxFKFNWRykKKyAgICBlbHNlIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdHls
ZVRhZykpCisgICAgICAgIHN0YXRpY19jYXN0PFNWR1N0eWxlRWxlbWVudCo+KGVsZW1lbnQpLT5z
ZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CisjZW5kaWYKKyAgICBlbHNlIGlmIChlbGVtZW50LT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6bGlua1RhZykpCisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxM
aW5rRWxlbWVudCo+KGVsZW1lbnQpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7Cit9CisKIHZv
aWQgWE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5h
bWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBpbnQg
bmJfbmFtZXNwYWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4
bWxDaGFyKiogbGlieG1sTmFtZXNwYWNlcywgaW50IG5iX2F0dHJpYnV0ZXMsIGludCBuYl9kZWZh
dWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBsaWJ4bWxBdHRyaWJ1dGVzKQogewpAQCAtODY1LDMwICs5
MDgsMTYgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5zKGNvbnN0IAogICAgICAg
ICBqc1Byb3h5LT5zZXRFdmVudEhhbmRsZXJMaW5lbm8oMCk7CiAKICAgICBuZXdFbGVtZW50LT5i
ZWdpblBhcnNpbmdDaGlsZHJlbigpOworICAgIGV2ZW50dWFsbHlNYXJrQXNQYXJzZXJDcmVhdGVk
KG5ld0VsZW1lbnQuZ2V0KCkpOwogCi0gICAgaWYgKG5ld0VsZW1lbnQtPmhhc1RhZ05hbWUoc2Ny
aXB0VGFnKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdEVsZW1lbnQqPihuZXdFbGVt
ZW50LmdldCgpKS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOwotICAgIGVsc2UgaWYgKG5ld0Vs
ZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdHlsZVRhZykpCi0gICAgICAgIHN0YXRpY19j
YXN0PEhUTUxTdHlsZUVsZW1lbnQqPihuZXdFbGVtZW50LmdldCgpKS0+c2V0Q3JlYXRlZEJ5UGFy
c2VyKHRydWUpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgZWxzZSBpZiAobmV3RWxlbWVudC0+aGFz
VGFnTmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKQotICAgICAgICBzdGF0aWNfY2FzdDxTVkdTdHls
ZUVsZW1lbnQqPihuZXdFbGVtZW50LmdldCgpKS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOwot
I2VuZGlmCi0gICAgZWxzZSBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omxp
bmtUYWcpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihuZXdFbGVtZW50
LmdldCgpKS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOwotCi0gICAgaWYgKG5ld0VsZW1lbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzY3JpcHRUYWcpCi0jaWYgRU5BQkxFKFNWRykKLSAgICAg
ICAgfHwgbmV3RWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFnKQotI2VuZGlm
Ci0gICAgICAgICkKKyAgICBpZiAoaXNTY3JpcHRFbGVtZW50KG5ld0VsZW1lbnQuZ2V0KCkpKQog
ICAgICAgICBtX3NjcmlwdFN0YXJ0TGluZSA9IGxpbmVOdW1iZXIoKTsKLSAgICAKKwogICAgIGlm
ICghbV9jdXJyZW50Tm9kZS0+YWRkQ2hpbGQobmV3RWxlbWVudC5nZXQoKSkpIHsKICAgICAgICAg
c3RvcFBhcnNpbmcoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIHNldEN1
cnJlbnROb2RlKG5ld0VsZW1lbnQuZ2V0KCkpOwogICAgIGlmIChtX3ZpZXcgJiYgIW5ld0VsZW1l
bnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIG5ld0VsZW1lbnQtPmF0dGFjaCgpOwpAQCAtOTExLDM0
ICs5NDAsMjEgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcygpCiAgICAgbi0+Zmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgCiAgICAgLy8gZG9uJ3QgbG9hZCBleHRlcm5hbCBz
Y3JpcHRzIGZvciBzdGFuZGFsb25lIGRvY3VtZW50cyAoZm9yIG5vdykKLSAgICBpZiAobi0+aXNF
bGVtZW50Tm9kZSgpICYmIG1fdmlldyAmJiAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pLT5oYXNU
YWdOYW1lKHNjcmlwdFRhZykgCi0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pLT5oYXNUYWdO
YW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKSkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgIGlmIChuLT5pc0VsZW1lbnROb2RlKCkgJiYgbV92aWV3ICYmIGlzU2Ny
aXB0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obikpKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9wZW5kaW5nU2NyaXB0KTsKLSAgICAgICAgCiAgICAgICAgIG1fcmVxdWVzdGluZ1NjcmlwdCA9
IHRydWU7Ci0gICAgICAgIAotICAgICAgICBFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG4pOyAgICAgICAgCi0gICAgICAgIFN0cmluZyBzY3JpcHRIcmVmOwot
ICAgICAgICAKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+aGFzVGFnTmFt
ZShzY3JpcHRUYWcpKQotICAgICAgICAgICAgc2NyaXB0SHJlZiA9IHNjcmlwdEVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShzcmNBdHRyKTsKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICBlbHNlIGlmIChz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obiktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNjcmlwdFRhZykp
Ci0gICAgICAgICAgICBzY3JpcHRIcmVmID0gc2NyaXB0RWxlbWVudC0+Z2V0QXR0cmlidXRlKFhM
aW5rTmFtZXM6OmhyZWZBdHRyKTsKLSNlbmRpZgotICAgICAgICAKKworICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOyAKKyAgICAgICAgU2NyaXB0RWxl
bWVudCogc2NyaXB0RWxlbWVudCA9IGNhc3RUb1NjcmlwdEVsZW1lbnQoZWxlbWVudCk7CisKKyAg
ICAgICAgU3RyaW5nIHNjcmlwdEhyZWYgPSBzY3JpcHRFbGVtZW50LT5zb3VyY2VBdHRyaWJ1dGVW
YWx1ZSgpOwogICAgICAgICBpZiAoIXNjcmlwdEhyZWYuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAvLyB3ZSBoYXZlIGEgc3JjIGF0dHJpYnV0ZSAKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgY2hhcnNldCA9IHNjcmlwdEVsZW1lbnQtPmdldEF0dHJpYnV0ZShjaGFyc2V0QXR0cik7
Ci0gICAgICAgICAgICBpZiAoKG1fcGVuZGluZ1NjcmlwdCA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+
cmVxdWVzdFNjcmlwdChzY3JpcHRIcmVmLCBjaGFyc2V0KSkpIHsKLSAgICAgICAgICAgICAgICBt
X3NjcmlwdEVsZW1lbnQgPSBzY3JpcHRFbGVtZW50OworICAgICAgICAgICAgU3RyaW5nIHNjcmlw
dENoYXJzZXQgPSBzY3JpcHRFbGVtZW50LT5jaGFyc2V0QXR0cmlidXRlVmFsdWUoKTsKKyAgICAg
ICAgICAgIGlmICgobV9wZW5kaW5nU2NyaXB0ID0gbV9kb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0
U2NyaXB0KHNjcmlwdEhyZWYsIHNjcmlwdENoYXJzZXQpKSkgeworICAgICAgICAgICAgICAgIG1f
c2NyaXB0RWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0
LT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAg
ICAgLy8gbV9wZW5kaW5nU2NyaXB0IHdpbGwgYmUgMCBpZiBzY3JpcHQgd2FzIGFscmVhZHkgbG9h
ZGVkIGFuZCByZWYoKSBleGVjdXRlZCBpdAogICAgICAgICAgICAgICAgIGlmIChtX3BlbmRpbmdT
Y3JpcHQpCiAgICAgICAgICAgICAgICAgICAgIHBhdXNlUGFyc2luZygpOwpAQCAtOTQ2LDE0ICs5
NjIsMTAgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcygpCiAgICAgICAgICAgICAg
ICAgbV9zY3JpcHRFbGVtZW50ID0gMDsKIAogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
U3RyaW5nIHNjcmlwdENvZGUgPSAiIjsKLSAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBz
Y3JpcHRFbGVtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1RleHROb2RlKCkgfHwgY2hp
bGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFKQotICAgICAgICAgICAg
ICAgICAgICBzY3JpcHRDb2RlICs9IHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEqPihjaGlsZCkt
PmRhdGEoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzY3JpcHRDb2RlID0g
c2NyaXB0RWxlbWVudC0+c2NyaXB0Q29udGVudCgpOwogICAgICAgICAgICAgbV92aWV3LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChtX2RvYy0+dXJsKCkuc3RyaW5nKCksIG1fc2Ny
aXB0U3RhcnRMaW5lLCBzY3JpcHRDb2RlKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBtX3JlcXVlc3RpbmdTY3JpcHQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTE0MzEsMTkgKzE0NDMs
MTkgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmZpbmlzaCgpCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxF
bGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50KiBkb2MsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlcykgCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyh4
aHRtbE5hbWVzcGFjZVVSSSwgInBhcnNlcmVycm9yIiwgZWMpOwotICAgIHJlcG9ydEVsZW1lbnQt
PnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHBy
ZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjog
MWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxhY2siKTsKKyAgICBSZWZQdHI8
RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKEhUTUxOYW1lczo6
eGh0bWxOYW1lc3BhY2VVUkksICJwYXJzZXJlcnJvciIsIGVjKTsKKyAgICByZXBvcnRFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9jazsgd2hp
dGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAxZW0gMCAx
ZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxhY2siKTsK
ICAgICAKLSAgICBSZWZQdHI8RWxlbWVudD4gaDMgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyh4aHRt
bE5hbWVzcGFjZVVSSSwgImgzIiwgZWMpOworICAgIFJlZlB0cjxFbGVtZW50PiBoMyA9IGRvYy0+
Y3JlYXRlRWxlbWVudE5TKEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkksICJoMyIsIGVjKTsK
ICAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChoMy5nZXQoKSwgZWMpOwogICAgIGgzLT5h
cHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZv
bGxvd2luZyBlcnJvcnM6IiksIGVjKTsKICAgICAKLSAgICBSZWZQdHI8RWxlbWVudD4gZml4ZWQg
PSBkb2MtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImRpdiIsIGVjKTsKKyAg
ICBSZWZQdHI8RWxlbWVudD4gZml4ZWQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhIVE1MTmFtZXM6
OnhodG1sTmFtZXNwYWNlVVJJLCAiZGl2IiwgZWMpOwogICAgIHJlcG9ydEVsZW1lbnQtPmFwcGVu
ZENoaWxkKGZpeGVkLmdldCgpLCBlYyk7Ci0gICAgZml4ZWQtPnNldEF0dHJpYnV0ZShzdHlsZUF0
dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiKTsKKyAgICBmaXhlZC0+
c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNl
O2ZvbnQtc2l6ZToxMnB4Iik7CiAgICAgZml4ZWQtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4
dE5vZGUoZXJyb3JNZXNzYWdlcyksIGVjKTsKICAgICAKLSAgICBoMyA9IGRvYy0+Y3JlYXRlRWxl
bWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAiaDMiLCBlYyk7CisgICAgaDMgPSBkb2MtPmNyZWF0
ZUVsZW1lbnROUyhIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJLCAiaDMiLCBlYyk7CiAgICAg
cmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQoaDMuZ2V0KCksIGVjKTsKICAgICBoMy0+YXBwZW5k
Q2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgiQmVsb3cgaXMgYSByZW5kZXJpbmcgb2YgdGhlIHBh
Z2UgdXAgdG8gdGhlIGZpcnN0IGVycm9yLiIpLCBlYyk7CiAgICAgCkBAIC0xNDY1LDkgKzE0Nzcs
OSBAQCB2b2lkIFhNTFRva2VuaXplcjo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvCiAgICAgRG9jdW1l
bnQqIGRvYyA9IG1fZG9jOwogICAgIE5vZGUqIGRvY3VtZW50RWxlbWVudCA9IGRvYy0+ZG9jdW1l
bnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpIHsKLSAgICAgICAgUmVmUHRy
PE5vZGU+IHJvb3RFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VV
UkksICJodG1sIiwgZWMpOworICAgICAgICBSZWZQdHI8Tm9kZT4gcm9vdEVsZW1lbnQgPSBkb2Mt
PmNyZWF0ZUVsZW1lbnROUyhIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJLCAiaHRtbCIsIGVj
KTsKICAgICAgICAgZG9jLT5hcHBlbmRDaGlsZChyb290RWxlbWVudCwgZWMpOwotICAgICAgICBS
ZWZQdHI8Tm9kZT4gYm9keSA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJ
LCAiYm9keSIsIGVjKTsKKyAgICAgICAgUmVmUHRyPE5vZGU+IGJvZHkgPSBkb2MtPmNyZWF0ZUVs
ZW1lbnROUyhIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJLCAiYm9keSIsIGVjKTsKICAgICAg
ICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHksIGVjKTsKICAgICAgICAgZG9jdW1lbnRF
bGVtZW50ID0gYm9keS5nZXQoKTsKICAgICB9CkBAIC0xNDc2LDggKzE0ODgsOCBAQCB2b2lkIFhN
TFRva2VuaXplcjo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvCiAgICAgICAgIC8vIFVudGlsIG91ciBT
VkcgaW1wbGVtZW50YXRpb24gaGFzIHRleHQgc3VwcG9ydCwgaXQgaXMgYmVzdCBpZiB3ZSAKICAg
ICAgICAgLy8gd3JhcCB0aGUgZXJyb25lb3VzIFNWRyBkb2N1bWVudCBpbiBhbiB4aHRtbCBkb2N1
bWVudCBhbmQgcmVuZGVyCiAgICAgICAgIC8vIHRoZSBjb21iaW5lZCBkb2N1bWVudCB3aXRoIGVy
cm9yIG1lc3NhZ2VzLgotICAgICAgICBSZWZQdHI8Tm9kZT4gcm9vdEVsZW1lbnQgPSBkb2MtPmNy
ZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImh0bWwiLCBlYyk7Ci0gICAgICAgIFJl
ZlB0cjxOb2RlPiBib2R5ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkks
ICJib2R5IiwgZWMpOworICAgICAgICBSZWZQdHI8Tm9kZT4gcm9vdEVsZW1lbnQgPSBkb2MtPmNy
ZWF0ZUVsZW1lbnROUyhIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJLCAiaHRtbCIsIGVjKTsK
KyAgICAgICAgUmVmUHRyPE5vZGU+IGJvZHkgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyhIVE1MTmFt
ZXM6OnhodG1sTmFtZXNwYWNlVVJJLCAiYm9keSIsIGVjKTsKICAgICAgICAgcm9vdEVsZW1lbnQt
PmFwcGVuZENoaWxkKGJvZHksIGVjKTsKICAgICAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZG9jdW1l
bnRFbGVtZW50LCBlYyk7CiAgICAgICAgIGRvYy0+YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQuZ2V0
KCksIGVjKTsKQEAgLTE0ODksOSArMTUwMSw5IEBAIHZvaWQgWE1MVG9rZW5pemVyOjppbnNlcnRF
cnJvck1lc3NhZ2VCbG8KICAgICBkb2N1bWVudEVsZW1lbnQtPmluc2VydEJlZm9yZShyZXBvcnRF
bGVtZW50LCBkb2N1bWVudEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSwgZWMpOwogI2lmIEVOQUJMRShY
U0xUKQogICAgIGlmIChkb2MtPnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKLSAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IHBhciA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNl
VVJJLCAicCIsIGVjKTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhciA9IGRvYy0+Y3JlYXRl
RWxlbWVudE5TKEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkksICJwIiwgZWMpOwogICAgICAg
ICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChwYXIsIGVjKTsKLSAgICAgICAgcGFyLT5zZXRB
dHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpOworICAgICAgICBwYXIt
PnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwi
KTsKICAgICAgICAgcGFyLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJUaGlzIGRv
Y3VtZW50IHdhcyBjcmVhdGVkIGFzIHRoZSByZXN1bHQgb2YgYW4gWFNMIHRyYW5zZm9ybWF0aW9u
LiBUaGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgZ2l2ZW4gYXJlIGZyb20gdGhlIHRyYW5zZm9y
bWVkIHJlc3VsdC4iKSwgZWMpOwogICAgIH0KICNlbmRpZgpAQCAtMTkxMiwxNCArMTkyNCw5IEBA
IHZvaWQgWE1MVG9rZW5pemVyOjpwYXJzZVN0YXJ0RWxlbWVudCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShzY3JpcHRUYWcpKQotICAg
ICAgICBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0RWxlbWVudCo+KG5ld0VsZW1lbnQuZ2V0KCkpLT5z
ZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CisgICAgZXZlbnR1YWxseU1hcmtBc1BhcnNlckNyZWF0
ZWQobmV3RWxlbWVudC5nZXQoKSk7CiAKLSAgICBpZiAobmV3RWxlbWVudC0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OnNjcmlwdFRhZykKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICB8fCBuZXdFbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpCi0jZW5kaWYKLSAgICAgICAgKQor
ICAgIGlmIChpc1NjcmlwdEVsZW1lbnQobmV3RWxlbWVudC5nZXQoKSkpCiAgICAgICAgIG1fc2Ny
aXB0U3RhcnRMaW5lID0gbGluZU51bWJlcigpOwogCiAgICAgaWYgKCFtX2N1cnJlbnROb2RlLT5h
ZGRDaGlsZChuZXdFbGVtZW50LmdldCgpKSkgewpAQCAtMTkzNyw0MCArMTk0NCwyMyBAQCB2b2lk
IFhNTFRva2VuaXplcjo6cGFyc2VFbmRFbGVtZW50KCkKICAgICBleGl0VGV4dCgpOwogCiAgICAg
Tm9kZSogbiA9IG1fY3VycmVudE5vZGU7Ci0KLSAgICAvLyBza2lwIGVuZCBvZiBkdW1teSBlbGVt
ZW50Ci0vLyAgICAgaWYgKG1fcGFyc2luZ0ZyYWdtZW50ICYgbi0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKQotLy8gICAgICAgICByZXR1cm47Ci0gICAgCiAgICAg
UmVmUHRyPE5vZGU+IHBhcmVudCA9IG4tPnBhcmVudE5vZGUoKTsKICAgICBuLT5maW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKTsKIAogICAgIC8vIGRvbid0IGxvYWQgZXh0ZXJuYWwgc2NyaXB0cyBmb3Ig
c3RhbmRhbG9uZSBkb2N1bWVudHMgKGZvciBub3cpCi0gICAgaWYgKG4tPmlzRWxlbWVudE5vZGUo
KSAmJiBtX3ZpZXcgJiYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+aGFzVGFnTmFtZShzY3Jp
cHRUYWcpIAotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+aGFzVGFnTmFtZShTVkdOYW1l
czo6c2NyaXB0VGFnKQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkpIHsKLQotCisgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSAmJiBtX3ZpZXcgJiYg
aXNTY3JpcHRFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkpIHsKICAgICAgICAgQVNT
RVJUKCFtX3BlbmRpbmdTY3JpcHQpOwotCiAgICAgICAgIG1fcmVxdWVzdGluZ1NjcmlwdCA9IHRy
dWU7CiAKLSAgICAgICAgRWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKTsKLSAgICAgICAgU3RyaW5nIHNjcmlwdEhyZWY7CisgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7IAorICAgICAgICBTY3JpcHRFbGVtZW50
KiBzY3JpcHRFbGVtZW50ID0gY2FzdFRvU2NyaXB0RWxlbWVudChlbGVtZW50KTsKIAotICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykpCi0g
ICAgICAgICAgICBzY3JpcHRIcmVmID0gc2NyaXB0RWxlbWVudC0+Z2V0QXR0cmlidXRlKHNyY0F0
dHIpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIGVsc2UgaWYgKHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c2NyaXB0VGFnKSkKLSAgICAgICAgICAgIHNj
cmlwdEhyZWYgPSBzY3JpcHRFbGVtZW50LT5nZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0
dHIpOwotI2VuZGlmCisgICAgICAgIFN0cmluZyBzY3JpcHRIcmVmID0gc2NyaXB0RWxlbWVudC0+
c291cmNlQXR0cmlidXRlVmFsdWUoKTsKICAgICAgICAgaWYgKCFzY3JpcHRIcmVmLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHNyYyBhdHRyaWJ1dGUKLSAgICAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgY2hhcnNldCA9IHNjcmlwdEVsZW1lbnQtPmdldEF0dHJpYnV0
ZShjaGFyc2V0QXR0cik7Ci0gICAgICAgICAgICBpZiAoKG1fcGVuZGluZ1NjcmlwdCA9IG1fZG9j
LT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzY3JpcHRIcmVmLCBjaGFyc2V0KSkpIHsKLSAg
ICAgICAgICAgICAgICBtX3NjcmlwdEVsZW1lbnQgPSBzY3JpcHRFbGVtZW50OworICAgICAgICAg
ICAgU3RyaW5nIHNjcmlwdENoYXJzZXQgPSBzY3JpcHRFbGVtZW50LT5jaGFyc2V0QXR0cmlidXRl
VmFsdWUoKTsKKyAgICAgICAgICAgIGlmICgobV9wZW5kaW5nU2NyaXB0ID0gbV9kb2MtPmRvY0xv
YWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNjcmlwdEhyZWYsIHNjcmlwdENoYXJzZXQpKSkgeworICAg
ICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAg
bV9wZW5kaW5nU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7CiAKICAgICAgICAgICAgICAgICAvLyBt
X3BlbmRpbmdTY3JpcHQgd2lsbCBiZSAwIGlmIHNjcmlwdCB3YXMgYWxyZWFkeSBsb2FkZWQgYW5k
IHJlZigpIGV4ZWN1dGVkIGl0CkBAIC0xOTgwLDEzICsxOTcwLDEwIEBAIHZvaWQgWE1MVG9rZW5p
emVyOjpwYXJzZUVuZEVsZW1lbnQoKQogICAgICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9
IDA7CiAKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBzY3JpcHRDb2RlID0g
IiI7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gc2NyaXB0RWxlbWVudC0+Zmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpIHx8IGNoaWxkLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkNEQVRBX1NFQ1RJT05fTk9ERSkKLSAgICAgICAgICAgICAgICAgICAgc2NyaXB0Q29kZSAr
PSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJEYXRhKj4oY2hpbGQpLT5kYXRhKCk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBTdHJpbmcgc2NyaXB0Q29kZSA9IHNjcmlwdEVsZW1lbnQtPnNjcmlw
dENvbnRlbnQoKTsKICAgICAgICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+bG9hZGVyKCktPmV4ZWN1
dGVTY3JpcHQobV9kb2MtPnVybCgpLnN0cmluZygpLCBtX3NjcmlwdFN0YXJ0TGluZSwgc2NyaXB0
Q29kZSk7CiAgICAgICAgIH0KKwogICAgICAgICBtX3JlcXVlc3RpbmdTY3JpcHQgPSBmYWxzZTsK
ICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzU3
NDApCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMywxNSArMjMsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxT
Y3JpcHRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKLSNpbmNsdWRlICJE
b2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQxLDU0ICszNSw0MiBAQCB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIAog
SFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3JpcHRFbGVtZW50KERvY3VtZW50KiBkb2MpCiAgICAg
OiBIVE1MRWxlbWVudChzY3JpcHRUYWcsIGRvYykKLSAgICAsIG1fY2FjaGVkU2NyaXB0KDApCi0g
ICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihmYWxzZSkKLSAgICAsIG1fZXZhbHVhdGVkKGZhbHNlKQor
ICAgICwgbV9kYXRhKHRoaXMsIHRoaXMpCiB7CiB9CiAKIEhUTUxTY3JpcHRFbGVtZW50Ojp+SFRN
TFNjcmlwdEVsZW1lbnQoKQogewotICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgbV9j
YWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAogYm9vbCBIVE1MU2NyaXB0RWxl
bWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKSBjb25zdAogewotICAgIHJldHVy
biBhdHRyLT5uYW1lKCkgPT0gc3JjQXR0cjsKKyAgICByZXR1cm4gYXR0ci0+bmFtZSgpID09IHNv
dXJjZUF0dHJpYnV0ZVZhbHVlKCk7Cit9CisKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldENy
ZWF0ZWRCeVBhcnNlcihib29sIGNyZWF0ZWRCeVBhcnNlcikKK3sKKyAgICBtX2RhdGEuc2V0Q3Jl
YXRlZEJ5UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcik7Cit9CisKK2Jvb2wgSFRNTFNjcmlwdEVsZW1l
bnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rh
dGEuc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNo
YW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0gICAgLy8g
SWYgYSBub2RlIGlzIGluc2VydGVkIGFzIGEgY2hpbGQgb2YgdGhlIHNjcmlwdCBlbGVtZW50Ci0g
ICAgLy8gYW5kIHRoZSBzY3JpcHQgZWxlbWVudCBoYXMgYmVlbiBpbnNlcnRlZCBpbiB0aGUgZG9j
dW1lbnQKLSAgICAvLyB3ZSBldmFsdWF0ZSB0aGUgc2NyaXB0LgotICAgIGlmICghbV9jcmVhdGVk
QnlQYXJzZXIgJiYgaW5Eb2N1bWVudCgpICYmIGZpcnN0Q2hpbGQoKSkKLSAgICAgICAgZXZhbHVh
dGVTY3JpcHQoZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIHRleHQoKSk7CisgICAgU2NyaXB0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKG1fZGF0YSk7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0
cikgewotICAgICAgICBpZiAobV9ldmFsdWF0ZWQgfHwgbV9jYWNoZWRTY3JpcHQgfHwgbV9jcmVh
dGVkQnlQYXJzZXIgfHwgIWluRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAvLyBGSVhNRTogRXZhbHVhdGUgc2NyaXB0cyBpbiB2aWV3bGVzcyBkb2N1bWVudHMuCi0g
ICAgICAgIC8vIFNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzI3
Ci0gICAgICAgIGlmICghZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB1cmwgPSBhdHRyLT52YWx1ZSgpOwot
ICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0
ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQodXJsLCBzY3JpcHRDaGFy
c2V0KCkpOwotICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2NyaXB0KQotICAgICAgICAgICAgICAg
IG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZGlzcGF0Y2hIVE1MRXZlbnQoZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmxvYWRBdHRyKQorCisgICAg
aWYgKGF0dHJOYW1lID09IHNyY0F0dHIpCisgICAgICAgIGhhbmRsZVNvdXJjZUF0dHJpYnV0ZSht
X2RhdGEsIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9ubG9hZEF0
dHIpCiAgICAgICAgIHNldEhUTUxFdmVudExpc3RlbmVyKGxvYWRFdmVudCwgYXR0cik7CiAgICAg
ZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CkBA
IC05NiwxODcgKzc4LDQwIEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmkKIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsK
LSAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElmIHdlIGhhdmUgbm8g
c3JjIGFuZCBubyB0ZXh0LAotICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGluZyBsYXRlci4KLSAg
ICBpZiAoZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiB0ZXh0KCkuaXNFbXB0eSgp
KQotICAgICAgICBzZXRDcmVhdGVkQnlQYXJzZXIoZmFsc2UpOworICAgIFNjcmlwdEVsZW1lbnQ6
OmZpbmlzaFBhcnNpbmdDaGlsZHJlbihtX2RhdGEsIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkpOwog
ICAgIEhUTUxFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIH0KIAogdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIEhUTUxFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwotCi0gICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlwdCk7
Ci0KLSAgICBpZiAobV9jcmVhdGVkQnlQYXJzZXIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSdkIGxpa2UgdG8gZXZhbHVhdGUgc2NyaXB0cyB3aGlj
aCBhcmUgaW5zZXJ0ZWQgaW50byBhIAotICAgIC8vIHZpZXdsZXNzIGRvY3VtZW50IGJ1dCB0aGlz
J2xsIGRvIGZvciBub3cuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MjcKLSAgICBpZiAoIWRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVybCA9IGdldEF0dHJpYnV0ZShz
cmNBdHRyKTsKLSAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jYWNoZWRTY3Jp
cHQgPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdCh1cmwsIHNjcmlwdENo
YXJzZXQoKSk7Ci0gICAgICAgIGlmIChtX2NhY2hlZFNjcmlwdCkKLSAgICAgICAgICAgIG1fY2Fj
aGVkU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRp
c3BhdGNoSFRNTEV2ZW50KGVycm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1wdHkgc2NyaXB0IG5vZGUsIHdlIHNo
b3VsZG4ndCBldmFsdWF0ZSB0aGUgc2NyaXB0Ci0gICAgLy8gYmVjYXVzZSBpZiBhIHNjcmlwdCBp
cyBpbnNlcnRlZCBhZnRlcndhcmRzIChieSBzZXR0aW5nIHRleHQgb3IgaW5uZXJUZXh0KQotICAg
IC8vIGl0IHNob3VsZCBiZSBldmFsdWF0ZWQsIGFuZCBldmFsdWF0ZVNjcmlwdCBvbmx5IGV2YWx1
YXRlcyBhIHNjcmlwdCBvbmNlLgotICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSB0ZXh0KCk7ICAg
IAotICAgIGlmICghc2NyaXB0U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgZXZhbHVhdGVTY3Jp
cHQoZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIHNjcmlwdFN0cmluZyk7CisgICAgU2NyaXB0
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQobV9kYXRhLCBzb3VyY2VBdHRyaWJ1dGVWYWx1
ZSgpKTsKIH0KIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgp
CiB7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLQotICAgIGlmICht
X2NhY2hlZFNjcmlwdCkgewotICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50KHRo
aXMpOwotICAgICAgICBtX2NhY2hlZFNjcmlwdCA9IDA7Ci0gICAgfQotfQotCi12b2lkIEhUTUxT
Y3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogbykKLXsKLSAgICBD
YWNoZWRTY3JpcHQqIGNzID0gc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0Kj4obyk7Ci0KLSAgICBB
U1NFUlQoY3MgPT0gbV9jYWNoZWRTY3JpcHQpOwotCi0gICAgLy8gRXZhbHVhdGluZyB0aGUgc2Ny
aXB0IGNvdWxkIGxlYWQgdG8gYSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpY2gKLSAgICAvLyBjYW4g
ZGVsZXRlIHRoZSBzY3JpcHQgZWxlbWVudCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgaXQuCi0gICAg
UmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90ZWN0KHRoaXMpOwotICAgIAotICAgIGlmIChj
cy0+ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBkaXNwYXRjaEhUTUxFdmVudChlcnJvckV2ZW50
LCB0cnVlLCBmYWxzZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGV2YWx1YXRlU2NyaXB0KGNzLT51
cmwoKSwgY3MtPnNjcmlwdCgpKTsKLSAgICAgICAgZGlzcGF0Y2hIVE1MRXZlbnQobG9hZEV2ZW50
LCBmYWxzZSwgZmFsc2UpOwotICAgIH0KLQotICAgIC8vIHNjcmlwdCBldmFsdWF0aW9uIG1heSBo
YXZlIGRlcmVmZmVkIGl0IGFscmVhZHkKLSAgICBpZiAobV9jYWNoZWRTY3JpcHQpIHsKLSAgICAg
ICAgbV9jYWNoZWRTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgbV9jYWNoZWRT
Y3JpcHQgPSAwOwotICAgIH0KLX0KLQotYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6c2hvdWxkRXhl
Y3V0ZUFzSmF2YVNjcmlwdCgpCi17Ci0gICAgLyoKLSAgICAgICAgIE1vemlsbGEgMS44IGFjY2Vw
dHMgamF2YXNjcmlwdDEuMCAtIGphdmFzY3JpcHQxLjcsIGJ1dCBXaW5JRSA3IGFjY2VwdHMgb25s
eSBqYXZhc2NyaXB0MS4xIC0gamF2YXNjcmlwdDEuMy4KLSAgICAgICAgIE1vemlsbGEgMS44IGFu
ZCBXaW5JRSA3IGJvdGggYWNjZXB0IGphdmFzY3JpcHQgYW5kIGxpdmVzY3JpcHQuCi0gICAgICAg
ICBXaW5JRSA3IGFjY2VwdHMgZWNtYXNjcmlwdCBhbmQganNjcmlwdCwgYnV0IE1vemlsbGEgMS44
IGRvZXNuJ3QuCi0gICAgICAgICBOZWl0aGVyIE1vemlsbGEgMS44IG5vciBXaW5JRSA3IGFjY2Vw
dCBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UuCi0gICAgICAgICBXZSB3YW50IHRvIGFj
Y2VwdCBhbGwgdGhlIHZhbHVlcyB0aGF0IGVpdGhlciBvZiB0aGVzZSBicm93c2VycyBhY2NlcHQs
IGJ1dCBub3Qgb3RoZXIgdmFsdWVzLgotICAgICAqLwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgdmFsaWRMYW5ndWFnZXNbXSA9IHsKLSAgICAgICAgImphdmFzY3JpcHQiLAotICAgICAg
ICAiamF2YXNjcmlwdDEuMCIsCi0gICAgICAgICJqYXZhc2NyaXB0MS4xIiwKLSAgICAgICAgImph
dmFzY3JpcHQxLjIiLAotICAgICAgICAiamF2YXNjcmlwdDEuMyIsCi0gICAgICAgICJqYXZhc2Ny
aXB0MS40IiwKLSAgICAgICAgImphdmFzY3JpcHQxLjUiLAotICAgICAgICAiamF2YXNjcmlwdDEu
NiIsCi0gICAgICAgICJqYXZhc2NyaXB0MS43IiwKLSAgICAgICAgImxpdmVzY3JpcHQiLAotICAg
ICAgICAiZWNtYXNjcmlwdCIsCi0gICAgICAgICJqc2NyaXB0IgotICAgIH07Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZhbGlkTGFuZ3VhZ2VzQ291bnQgPSBzaXplb2YodmFsaWRMYW5ndWFn
ZXMpIC8gc2l6ZW9mKHZhbGlkTGFuZ3VhZ2VzWzBdKTsgCi0KLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUgPSBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwotICAgIGlmICghdHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgU3RyaW5nIGxvd2VyVHlwZSA9IHR5cGUuc3RyaW5nKCkuc3RyaXBXaGl0
ZVNwYWNlKCkubG93ZXIoKTsKLSAgICAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSmF2YVNjcmlwdE1JTUVUeXBlKGxvd2VyVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBsYW5ndWFnZSA9IGdldEF0dHJpYnV0ZShsYW5ndWFnZUF0dHIpOwotICAgIGlmICghbGFu
Z3VhZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBsb3dlckxhbmd1YWdlID0gbGFuZ3Vh
Z2Uuc3RyaW5nKCkubG93ZXIoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZh
bGlkTGFuZ3VhZ2VzQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGlmIChsb3dlckxhbmd1YWdlID09
IHZhbGlkTGFuZ3VhZ2VzW2ldKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBObyB0eXBlIG9yIGxhbmd1YWdlIGlz
IHNwZWNpZmllZCwgc28gd2UgYXNzdW1lIHRoZSBzY3JpcHQgdG8gYmUgSmF2YVNjcmlwdAotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlw
dChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCi17Ci0gICAgaWYgKG1f
ZXZhbHVhdGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKCFzaG91bGRFeGVjdXRl
QXNKYXZhU2NyaXB0KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBpZiAoZnJh
bWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgbV9ldmFsdWF0ZWQgPSB0
cnVlOwotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhcnRpbmcgbGluZSBudW1iZXIgd2ls
bCBiZSBpbmNvcnJlY3QgZm9yIGV2YWx1YXRpb24gdHJpZ2dlcmVkCi0gICAgICAgICAgICAvLyBm
cm9tIGluc2VydGVkSW50b0RvY3VtZW50IG9yIGNoaWxkcmVuQ2hhbmdlZC4KLSAgICAgICAgICAg
IGZyYW1lLT5zY3JpcHQoKS0+ZXZhbHVhdGUodXJsLCAxLCBzY3JpcHQpOwotICAgICAgICAgICAg
RG9jdW1lbnQ6OnVwZGF0ZURvY3VtZW50c1JlbmRlcmluZygpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIFNjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQobV9kYXRhKTsKIH0KIAogU3Ry
aW5nIEhUTUxTY3JpcHRFbGVtZW50Ojp0ZXh0KCkgY29uc3QKIHsKLSAgICBWZWN0b3I8VUNoYXI+
IHZhbDsKLSAgICBUZXh0KiBmaXJzdFRleHROb2RlID0gMDsKLSAgICBib29sIGZvdW5kTXVsdGlw
bGVUZXh0Tm9kZXMgPSBmYWxzZTsKLSAgICAKLSAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxk
KCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChuLT5pc1RleHROb2Rl
KCkpIHsKLSAgICAgICAgICAgIGlmIChmb3VuZE11bHRpcGxlVGV4dE5vZGVzKQotICAgICAgICAg
ICAgICAgIGFwcGVuZCh2YWwsIHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGZpcnN0VGV4dE5vZGUpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmQo
dmFsLCBmaXJzdFRleHROb2RlLT5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZCh2YWws
IHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBmb3VuZE11
bHRpcGxlVGV4dE5vZGVzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgZmlyc3RUZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihuKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSAgICAgICAgCi0gICAgaWYgKGZpcnN0VGV4dE5vZGUgJiYg
IWZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMpCi0gICAgICAgIHJldHVybiBmaXJzdFRleHROb2RlLT5k
YXRhKCk7Ci0gICAgCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQodmFsKTsKKyAgICByZXR1cm4g
bV9kYXRhLnNjcmlwdENvbnRlbnQoKTsKIH0KIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0
VGV4dChjb25zdCBTdHJpbmcgJnZhbHVlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGludCBudW1DaGlsZHJlbiA9IGNoaWxkTm9kZUNvdW50KCk7Ci0gICAgCisKICAgICBpZiAo
bnVtQ2hpbGRyZW4gPT0gMSAmJiBmaXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKSkgewotICAgICAg
ICBzdGF0aWNfY2FzdDxUZXh0ICo+KGZpcnN0Q2hpbGQoKSktPnNldERhdGEodmFsdWUsIGVjKTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8VGV4dCo+KGZpcnN0Q2hpbGQoKSktPnNldERhdGEodmFsdWUs
IGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChudW1DaGlsZHJl
biA+IDApCiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgCisKICAgICBhcHBlbmRDaGls
ZChkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh2YWx1ZS5pbXBsKCkpLCBlYyk7CiB9CiAKQEAg
LTI4Niw3ICsxMjEsNyBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6Omh0bWxGb3IoKSBjb25z
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRI
dG1sRm9yKGNvbnN0IFN0cmluZyYgLyp2YWx1ZSovKQordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6
c2V0SHRtbEZvcihjb25zdCBTdHJpbmcmKQogewogICAgIC8vIERPTSBMZXZlbCAxIHNheXM6IHJl
c2VydmVkIGZvciBmdXR1cmUgdXNlLgogfQpAQCAtMjk3LDE0ICsxMzIsMTQgQEAgU3RyaW5nIEhU
TUxTY3JpcHRFbGVtZW50OjpldmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRFdmVudChjb25zdCBTdHJpbmcmIC8qdmFsdWUq
LykKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldEV2ZW50KGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgLy8gRE9NIExldmVsIDEgc2F5czogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCiB9CiAKIFN0
cmluZyBIVE1MU2NyaXB0RWxlbWVudDo6Y2hhcnNldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShjaGFyc2V0QXR0cik7CisgICAgcmV0dXJuIGNoYXJzZXRBdHRyaWJ1dGVWYWx1
ZSgpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpzZXRDaGFyc2V0KGNvbnN0IFN0cmlu
ZyAmdmFsdWUpCkBAIC0zMjQsNyArMTU5LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0
RGVmZXIoYm9vbCBkZQogCiBLVVJMIEhUTUxTY3JpcHRFbGVtZW50OjpzcmMoKSBjb25zdAogewot
ICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUoc3JjQXR0cikp
OworICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzb3VyY2VBdHRyaWJ1dGVWYWx1
ZSgpKTsKIH0KIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0U3JjKGNvbnN0IFN0cmluZyAm
dmFsdWUpCkBAIC0zMzQsNyArMTY5LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0U3Jj
KGNvbnN0IFN0cgogCiBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewot
ICAgIHJldHVybiBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOworICAgIHJldHVybiB0eXBlQXR0cmli
dXRlVmFsdWUoKTsKIH0KIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VHlwZShjb25zdCBT
dHJpbmcgJnZhbHVlKQpAQCAtMzQ0LDE1ICsxNzksMTIgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVu
dDo6c2V0VHlwZShjb25zdCBTdAogCiBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OnNjcmlwdENo
YXJzZXQoKSBjb25zdAogewotICAgIC8vIEZpcnN0IHdlIHRyeSB0byBnZXQgZW5jb2RpbmcgZnJv
bSBjaGFyc2V0IGF0dHJpYnV0ZS4KLSAgICBTdHJpbmcgY2hhcnNldCA9IGdldEF0dHJpYnV0ZShj
aGFyc2V0QXR0cikuc3RyaW5nKCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgLy8gSWYgY2hhcnNl
dCBoYXMgbm90IGJlZW4gZGVjbGFyZWQgaW4gc2NyaXB0IHRhZywgZmFsbCBiYWNrCi0gICAgLy8g
dG8gZnJhbWUgZW5jb2RpbmcuCi0gICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgY2hh
cnNldCA9IGZyYW1lLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNo
YXJzZXQ7CisgICAgcmV0dXJuIG1fZGF0YS5zY3JpcHRDaGFyc2V0KCk7Cit9CisKK1N0cmluZyBI
VE1MU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZGF0YS5zY3JpcHRDb250ZW50KCk7CiB9CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmdldFN1
YnJlc291cmNlQXR0cmlidXRlU3RyaW5ncyhWZWN0b3I8U3RyaW5nPiYgdXJscykgY29uc3QKQEAg
LTM2MCw0ICsxOTIsMzQgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6Z2V0U3VicmVzb3VyY2VB
dAogICAgIHVybHMuYXBwZW5kKHNyYygpLnN0cmluZygpKTsKIH0KIAorU3RyaW5nIEhUTUxTY3Jp
cHRFbGVtZW50Ojpzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShzcmNBdHRyKS5zdHJpbmcoKTsKK30KKworU3RyaW5nIEhUTUxTY3JpcHRFbGVt
ZW50OjpjaGFyc2V0QXR0cmlidXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUoY2hhcnNldEF0dHIpLnN0cmluZygpOzsKK30KKworU3RyaW5nIEhUTUxTY3JpcHRFbGVt
ZW50Ojp0eXBlQXR0cmlidXRlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUodHlwZUF0dHIpLnN0cmluZygpOzsKK30KKworU3RyaW5nIEhUTUxTY3JpcHRFbGVtZW50Ojps
YW5ndWFnZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KGxhbmd1YWdlQXR0cikuc3RyaW5nKCk7Cit9CisKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRp
c3BhdGNoTG9hZEV2ZW50KCkKK3sKKyAgICBkaXNwYXRjaEhUTUxFdmVudChsb2FkRXZlbnQsIGZh
bHNlLCBmYWxzZSk7Cit9CisKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JF
dmVudCgpCit7CisgICAgZGlzcGF0Y2hIVE1MRXZlbnQoZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2Up
OworfQorCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMzU3NDAp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
Miw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjMsMTggKzI0LDIxIEBACiAjaWZuZGVmIEhUTUxTY3JpcHRFbGVtZW50X2gKICNkZWZp
bmUgSFRNTFNjcmlwdEVsZW1lbnRfaAogCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCIKKyNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDYWNoZWRTY3JpcHQ7Ci0KLWNsYXNzIEhU
TUxTY3JpcHRFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgeworY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQK
KyAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFNjcmlwdEVsZW1lbnQgewogcHVibGlj
OgogICAgIEhUTUxTY3JpcHRFbGVtZW50KERvY3VtZW50Kik7CiAgICAgfkhUTUxTY3JpcHRFbGVt
ZW50KCk7CiAKKyAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29sKTsKKyAgICBib29sIHNo
b3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzY3Jp
cHRDb250ZW50KCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVx
dWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1
YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTsgfQogICAgIHZpcnR1YWwgYm9v
bCBjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkgeyByZXR1cm4gbmV3Q2hpbGQtPmlzVGV4
dE5vZGUoKTsgfQpAQCAtNDIsMTggKzQ2LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KTsKLQogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAw
LCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRy
aWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7Ci0KLSAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihi
b29sIGNyZWF0ZWRCeVBhcnNlcikgeyBtX2NyZWF0ZWRCeVBhcnNlciA9IGNyZWF0ZWRCeVBhcnNl
cjsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAotICAgIGJv
b2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKLQogICAgIFN0cmluZyB0
ZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCkBAIC04MCwx
MCArNzcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBnZXRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKIAorcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgdHlwZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgbGFu
Z3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
TG9hZEV2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOworCiBw
cml2YXRlOgotICAgIENhY2hlZFNjcmlwdCogbV9jYWNoZWRTY3JpcHQ7Ci0gICAgYm9vbCBtX2Ny
ZWF0ZWRCeVBhcnNlcjsKLSAgICBib29sIG1fZXZhbHVhdGVkOworICAgIFNjcmlwdEVsZW1lbnRE
YXRhIG1fZGF0YTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTc0MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIFNWR1NjcmlwdEVsZW1lbnQ6OlNW
R1NjcmlwdEVsZW1lbnQoY29uc3QKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQogICAg
ICwgU1ZHVVJJUmVmZXJlbmNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KQorICAgICwgbV9kYXRhKHRoaXMsIHRoaXMpCiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDExIEBAIHZv
aWQgU1ZHU2NyaXB0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHIKICAgICBtX3R5cGUgPSB0eXBl
OwogfQogCitTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZGF0YS5zY3JpcHRDb250ZW50KCk7Cit9CisKIHZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKQpAQCAtNjgsNiArNzQs
MzcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpnZXRTdWJyZXNvdXJjZUF0dAogICAgIHVybHMu
YXBwZW5kKGhyZWYoKSk7CiB9CiAKK1N0cmluZyBTVkdTY3JpcHRFbGVtZW50Ojpzb3VyY2VBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhyZWYoKTsKK30KKworU3RyaW5nIFNW
R1NjcmlwdEVsZW1lbnQ6OmNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6dHlwZUF0dHJpYnV0
ZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHlwZSgpOworfQorCitTdHJpbmcgU1ZHU2Ny
aXB0RWxlbWVudDo6bGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50
KCkKK3sKKyAgICAvLyBUT0RPIQorICAgIC8vIGRpc3BhdGNoU1ZHRXZlbnQobG9hZEV2ZW50LCBm
YWxzZSwgZmFsc2UpOworfQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JF
dmVudCgpCit7CisgICAgLy8gVE9ETyEKKyAgICAvLyBkaXNwYXRjaFNWR0V2ZW50KGVycm9yRXZl
bnQsIHRydWUsIGZhbHNlKTsKK30KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAzNTc0MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTkgKzI0LDI0IEBACiAjZGVmaW5l
IFNWR1NjcmlwdEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTY3JpcHRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHU2NyaXB0RWxlbWVudCA6IHB1YmxpYyBT
VkdFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVm
ZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCB7CisgICAgY2xhc3MgU1ZHU2NyaXB0RWxlbWVudCA6IHB1YmxpYyBT
VkdFbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBTVkdVUklSZWZl
cmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFNjcmlw
dEVsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU2NyaXB0RWxl
bWVudCgpOwogCisgICAgICAgIHZvaWQgc2V0Q3JlYXRlZEJ5UGFyc2VyKGJvb2wpIHsgfQorICAg
ICAgICB2aXJ0dWFsIFN0cmluZyBzY3JpcHRDb250ZW50KCkgY29uc3Q7CisKICAgICAgICAgU3Ry
aW5nIHR5cGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOwog
CkBAIC00Niw3ICs1MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdGhpczsgfQogCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUF0dHJpYnV0
ZVZhbHVlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmluZyB0eXBlQXR0cmlidXRlVmFsdWUo
KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisKICAgICBwcml2YXRlOgor
ICAgICAgICBTY3JpcHRFbGVtZW50RGF0YSBtX2RhdGE7CiAgICAgICAgIFN0cmluZyBtX3R5cGU7
CiAgICAgfTsKIAo=
</data>
<flag name="review"
          id="10113"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23454</attachid>
            <date>2008-09-15 18:07:56 -0700</date>
            <delta_ts>2008-09-19 20:00:31 -0700</delta_ts>
            <desc>Patch 2/2 - v1: Let SVGScriptElement use the new ScriptElement base class</desc>
            <filename>FixSVGScriptElement.diff</filename>
            <type>text/plain</type>
            <size>40445</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjQ2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMDgtMDktMTUgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzcy
CisKKyAgICAgICAgRmluaXNoIEhUTUxTY3JpcHRFbGVtZW50IC8gU1ZHU2NyaXB0RWxlbWVudCB1
bmlmaWNhdGlvbi4KKyAgICAgICAgU1ZHIDxzY3JpcHQ+IHN1cHBvcnQgaXMgY29tcGxldGUgbm93
LCBmdWxsIFNWR0xvYWQgZXZlbnQKKyAgICAgICAgcmVzcGVjdGluZyB0aGUgaW5mbHVlbmNlIG9m
IHRoZSBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIGF0dHJpYnV0ZQorICAgICAgICBhcyB3ZWxs
IGFzIFNWR0Vycm9yIGV2ZW50IHN1cHBvcnQuIEFsbCBvdGhlciBmZWF0dXJlcyBzaGFyZWQgd2l0
aCBIVE1MLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3Jp
cHQtcmVleGVjdXRpb24uaHRtbAorICAgICAgICAgICAgICAgc3ZnL2RvbS9TVkdTY3JpcHRFbGVt
ZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMuc3ZnCisgICAgICAgICAgICAgICBzdmcv
ZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLnN2ZworICAgICAgICAgICAg
ICAgc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi5zdmcKKworICAgICAg
ICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnREYXRhOjpTY3JpcHRFbGVtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50RGF0YTo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjpoYXZlRmlyZWRMb2FkRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudERhdGE6OnNldEhhdmVGaXJlZExvYWRF
dmVudCk6CisgICAgICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxUb2tlbml6ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpkaXNw
YXRjaExvYWRFdmVudCk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6c2V0Q3JlYXRlZEJ5UGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTY3JpcHRFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjpTY3JpcHRFbGVtZW50
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6cmVxdWVzdFNjcmlw
dCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEVsZW1lbnREYXRhOjpoYXZlRmlyZWRMb2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudERhdGE6OnNldEhhdmVGaXJlZExvYWRFdmVudCk6CisgICAgICAgICogZG9t
L1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6Om5vdGlm
eUZpbmlzaGVkKToKKwogMjAwOC0wOS0xNSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLCBCZXRoIERha2luCklu
ZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzY0NjgpCisrKyBXZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw3IEBAIFNjcmlw
dEVsZW1lbnREYXRhOjpTY3JpcHRFbGVtZW50RGF0YShTY3IKICAgICAsIG1fY2FjaGVkU2NyaXB0
KDApCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihmYWxzZSkKICAgICAsIG1fZXZhbHVhdGVkKGZh
bHNlKQorICAgICwgbV9maXJlZExvYWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RWxl
bWVudCk7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC0xNDEsNiArMTQyLDExIEBAIHZvaWQg
U2NyaXB0RWxlbWVudERhdGE6OnJlcXVlc3RTY3JpcHQoY28KICAgICBBU1NFUlQoIW1fY2FjaGVk
U2NyaXB0KTsKICAgICBtX2NhY2hlZFNjcmlwdCA9IGRvY3VtZW50LT5kb2NMb2FkZXIoKS0+cmVx
dWVzdFNjcmlwdChzb3VyY2VVcmwsIHNjcmlwdENoYXJzZXQoKSk7CiAKKyAgICAvLyBtX2NyZWF0
ZWRCeVBhcnNlciBpcyBuZXZlciByZXNldCAtIGFsd2F5cyByZXNpZWQgYXQgdGhlIGluaXRpYWwg
dmFsdWUgc2V0IHdoaWxlIHBhcnNpbmcuCisgICAgLy8gbV9ldmFsdWF0ZWQgaXMgbGVmdCB1bnRv
dWNoZWQgYXMgd2VsbCB0byBhdm9pZCBzY3JpcHQgcmVleGVjdXRpb24sIGlmIGEgPHNjcmlwdD4g
ZWxlbWVudAorICAgIC8vIGlzIHJlbW92ZWQgYW5kIHJlYXBwZW5kZWQgdG8gdGhlIGRvY3VtZW50
LgorICAgIG1fZmlyZWRMb2FkID0gZmFsc2U7CisKICAgICBpZiAobV9jYWNoZWRTY3JpcHQpIHsK
ICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMzY0NjgpCisrKyBXZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDggQEAgcHVibGljOgog
ICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICBi
b29sIGNyZWF0ZWRCeVBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZEJ5UGFyc2VyOyB9
CiAgICAgdm9pZCBzZXRDcmVhdGVkQnlQYXJzZXIoYm9vbCB2YWx1ZSkgeyBtX2NyZWF0ZWRCeVBh
cnNlciA9IHZhbHVlOyB9CisgICAgYm9vbCBoYXZlRmlyZWRMb2FkRXZlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2ZpcmVkTG9hZDsgfQorICAgIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wg
ZmlyZWRMb2FkKSB7IG1fZmlyZWRMb2FkID0gZmlyZWRMb2FkOyB9CiAKICAgICB2b2lkIHJlcXVl
c3RTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpOwogICAgIHZvaWQgZXZhbHVhdGVTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CkBAIC04
NCw2ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2Ny
aXB0PiBtX2NhY2hlZFNjcmlwdDsKICAgICBib29sIG1fY3JlYXRlZEJ5UGFyc2VyOwogICAgIGJv
b2wgbV9ldmFsdWF0ZWQ7CisgICAgYm9vbCBtX2ZpcmVkTG9hZDsKIH07CiAKIH0KSW5kZXg6IFdl
YkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1M
VG9rZW5pemVyLmNwcAkocmV2aXNpb24gMzY0NjgpCisrKyBXZWJDb3JlL2RvbS9YTUxUb2tlbml6
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRU
eXBlLmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTc1LDggKzc0
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2lu
ZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKLQogY29uc3QgaW50IG1heEVycm9ycyA9IDI1OwogCiAj
aWZuZGVmIFVTRV9RWE1MU1RSRUFNCkBAIC0xNTI1LDEyICsxNTIyLDE1IEBAIHZvaWQgWE1MVG9r
ZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWQKICAgICAKICAgICBSZWZQdHI8RWxlbWVudD4g
ZSA9IG1fc2NyaXB0RWxlbWVudDsKICAgICBtX3NjcmlwdEVsZW1lbnQgPSAwOwotICAgIAorCisg
ICAgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IGNhc3RUb1NjcmlwdEVsZW1lbnQoZS5n
ZXQoKSk7CisgICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOworCiAgICAgaWYgKGVycm9yT2NjdXJy
ZWQpIAotICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KGUuZ2V0KCkpLT5kaXNwYXRjaEV2ZW50
Rm9yVHlwZShlcnJvckV2ZW50LCB0cnVlLCBmYWxzZSk7CisgICAgICAgIHNjcmlwdEVsZW1lbnQt
PmRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgIGVsc2UgewogICAgICAgICBtX3ZpZXctPmZyYW1l
KCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KGNhY2hlZFNjcmlwdFVybCwgMSwgc2NyaXB0U291
cmNlKTsKLSAgICAgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChlLmdldCgpKS0+ZGlzcGF0Y2hFdmVu
dEZvclR5cGUobG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgICAgICBzY3JpcHRFbGVtZW50
LT5kaXNwYXRjaExvYWRFdmVudCgpOwogICAgIH0KICAgICAKICAgICBtX3NjcmlwdEVsZW1lbnQg
PSAwOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjQ2OCkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxNCw2ICsyMTQsOSBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6Omxhbmd1YWdlQXR0cmli
CiAgCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CisgICAg
QVNTRVJUKCFtX2RhdGEuaGF2ZUZpcmVkTG9hZEV2ZW50KCkpOworICAgIG1fZGF0YS5zZXRIYXZl
RmlyZWRMb2FkRXZlbnQodHJ1ZSk7CisKICAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShsb2FkRXZl
bnQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAzNjQ2OCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUg
IlNWR1NjcmlwdEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNCArNDIsOSBAQCBT
VkdTY3JpcHRFbGVtZW50Ojp+U1ZHU2NyaXB0RWxlbWVudCgpCiB7CiB9CiAKLVN0cmluZyBTVkdT
Y3JpcHRFbGVtZW50Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90eXBlOwotfQotCi12
b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBT
VkdTY3JpcHRFbGVtZW50OjpzZXRDcmVhdGVkQnlQYXJzZXIoYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CiB7Ci0gICAgbV90eXBlID0gdHlwZTsKKyAgICBtX2RhdGEuc2V0Q3JlYXRlZEJ5UGFyc2VyKGNy
ZWF0ZWRCeVBhcnNlcik7CiB9CiAKIFN0cmluZyBTVkdTY3JpcHRFbGVtZW50OjpzY3JpcHRDb250
ZW50KCkgY29uc3QKQEAgLTU3LDcgKzU0LDkgQEAgU3RyaW5nIFNWR1NjcmlwdEVsZW1lbnQ6OnNj
cmlwdENvbnRlbnQoKQogCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp0eXBlQXR0cikKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0
dHItPm5hbWUoKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpCiAg
ICAgICAgIHNldFR5cGUoYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtNjksMTEgKzY4
LDc2IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9
CiAKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKKworICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKQorICAgICAgICBoYW5kbGVTb3VyY2VBdHRyaWJ1dGUobV9kYXRhLCBocmVm
KCkpOworfQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkK
K3sKKyAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIFNjcmlwdEVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KG1fZGF0YSwgc291cmNlQXR0cmlidXRlVmFsdWUo
KSk7CisKKyAgICBpZiAobV9kYXRhLmNyZWF0ZWRCeVBhcnNlcigpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBFdmVudHVhbGx5IHNlbmQgU1ZHTG9hZCBldmVudCBub3cgZm9yIHRoZSBkeW5h
bWljYWxseSBpbnNlcnRlZCBzY3JpcHQgZWxlbWVudAorICAgIGlmICghZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEJhc2VWYWx1ZSgpKSB7CisgICAgICAgIG1fZGF0YS5zZXRIYXZlRmlyZWRMb2Fk
RXZlbnQodHJ1ZSk7CisgICAgICAgIHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKCk7CisgICAg
fQorfQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQorewor
ICAgIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICBTY3JpcHRFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KG1fZGF0YSk7Cit9CisKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFu
Z2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQoreworICAgIFNjcmlw
dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChtX2RhdGEpOworICAgIFNWR0VsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7Cit9CisKK2Jvb2wgU1ZHU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKSBjb25zdAoreworICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0g
c291cmNlQXR0cmlidXRlVmFsdWUoKTsKK30KKwordm9pZCBTVkdTY3JpcHRFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4oKQoreworICAgIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdD
aGlsZHJlbihtX2RhdGEsIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkpOworICAgIFNWR0VsZW1lbnQ6
OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworCisgICAgLy8gQSBTVkdMb2FkIGV2ZW50IGhhcyBi
ZWVuIGZpcmVkIGJ5IFNWR0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbi4KKyAgICBpZiAo
IWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSkKKyAgICAgICAgbV9kYXRhLnNl
dEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKK30KKworU3RyaW5nIFNWR1NjcmlwdEVsZW1lbnQ6
OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK3ZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgbV90eXBlID0gdHlw
ZTsKK30KKwogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpnZXRTdWJyZXNvdXJjZUF0dHJpYnV0ZVN0
cmluZ3MoVmVjdG9yPFN0cmluZz4mIHVybHMpIGNvbnN0CiB7CiAgICAgdXJscy5hcHBlbmQoaHJl
ZigpKTsKIH0KIAorYm9vbCBTVkdTY3JpcHRFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNv
dXJjZXMoKQoreworICAgIHJldHVybiAhZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1
ZSgpIHx8IG1fZGF0YS5oYXZlRmlyZWRMb2FkRXZlbnQoKTsKK30KKwogU3RyaW5nIFNWR1Njcmlw
dEVsZW1lbnQ6OnNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJl
ZigpOwpAQCAtOTYsMTUgKzE2MCwzMSBAQCBTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6bGFuZ3Vh
Z2VBdHRyaWJ1CiAKIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQog
ewotICAgIC8vIFRPRE8hCi0gICAgLy8gZGlzcGF0Y2hTVkdFdmVudChsb2FkRXZlbnQsIGZhbHNl
LCBmYWxzZSk7CisgICAgaWYgKG1fZGF0YS5jcmVhdGVkQnlQYXJzZXIoKSkKKyAgICAgICAgQVNT
RVJUKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSAhPSBtX2RhdGEuaGF2ZUZp
cmVkTG9hZEV2ZW50KCkpOworICAgIGVsc2UgaWYgKG1fZGF0YS5oYXZlRmlyZWRMb2FkRXZlbnQo
KSkKKyAgICAgICAgQVNTRVJUKCFleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkp
OworCisgICAgLy8gSFRNTCBhbmQgU1ZHIGRpZmZlciBjb21wbGV0bHkgaW4gdGhlICdvbmxvYWQn
IGV2ZW50IGhhbmRsaW5nIG9mIDxzY3JpcHQ+IGVsZW1lbnRzLgorICAgIC8vIEhUTUwgZmlyZXMg
dGhlICdsb2FkJyBldmVudCBhZnRlciBpdCBzdWNlc3NmdWxseSBsb2FkZWQgYSByZW1vdGUgcmVz
b3VyY2UsIG90aGVyd2hpc2UgYW4gZXJyb3IgZXZlbnQuCisgICAgLy8gU1ZHIGZpcmVzIHRoZSBT
VkdMb2FkIGV2ZW50IGltbWVkaWF0ZWx5IGFmdGVyIHBhcnNpbmcgdGhlIDxzY3JpcHQ+IGVsZW1l
bnQsIGlmIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKKyAgICAvLyBpcyBzZXQgdG8gJ2ZhbHNl
Jywgb3RoZXJ3aGlzZSBpdCBkaXNwYXRjaGVzIHRoZSAnU1ZHTG9hZCcgZXZlbnQganVzdCBhZnRl
ciBsb2FkaW5nIHRoZSByZW1vdGUgcmVzb3VyY2UuCisgICAgaWYgKGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRCYXNlVmFsdWUoKSkgeworICAgICAgICBBU1NFUlQoIW1fZGF0YS5oYXZlRmlyZWRM
b2FkRXZlbnQoKSk7CisKKyAgICAgICAgLy8gRGlzcGF0Y2ggU1ZHTG9hZCBldmVudAorICAgICAg
ICBtX2RhdGEuc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUpOworICAgICAgICBBU1NFUlQoaGF2
ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkpOworCisgICAgICAgIHNlbmRTVkdMb2FkRXZlbnRJ
ZlBvc3NpYmxlKCk7CisgICAgfQogfQogCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNo
RXJyb3JFdmVudCgpCiB7Ci0gICAgLy8gVE9ETyEKLSAgICAvLyBkaXNwYXRjaFNWR0V2ZW50KGVy
cm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKKyAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShFdmVudE5h
bWVzOjplcnJvckV2ZW50LCB0cnVlLCBmYWxzZSk7CiB9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAzNjQ2OCkKKysrIFdl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTcgKzM5
LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU2NyaXB0
RWxlbWVudCgpOwogCi0gICAgICAgIHZvaWQgc2V0Q3JlYXRlZEJ5UGFyc2VyKGJvb2wpIHsgfQor
ICAgICAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29sKTsKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgc2NyaXB0Q29udGVudCgpIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGluc2VydGVkSW50b0RvY3VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bURvY3VtZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0
ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKwogICAgICAgICBTdHJpbmcg
dHlwZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAq
YXR0cik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRTdWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmlu
Z3MoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmly
dHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRo
aXM7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygp
OwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMzY0NjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw1MiBAQAorMjAwOC0wOS0xNSAgTmlrb2xhcyBaaW1tZXJtYW5u
ICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeGVzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzNzIKKworICAgICAgICBBZGQgbmV3IHRlc3QgZmFzdC9kb20vSFRNTFNjcmlwdEVs
ZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLmh0bWwsIHZlcmlmeWluZyB0aGF0CisgICAgICAgIGFw
cGVuZGluZyBhIDxzY3JpcHQ+LCByZW1vdmluZyBhbmQgcmVhcHBlbmRpbmcgZG9lc24ndCByZWV4
ZWN1dGUgdGhlIHNjcmlwdC4KKworICAgICAgICBGaXggb2J2aW91cyBlcnJvcnMgaW4gdGVzdHMg
Y29udGFpbmVkIGluIGZhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50Ly4KKyAgICAgICAgVXNlIHRo
ZXNlIHRlc3RzIGFzIHNrZWxldG9uIGZvciBhIHNlcmllcyBvZiBTVkdTY3JpcHRFbGVtZW50IHRl
c3RzLgorICAgICAgICBFc3BlY2lhbGx5IHRlc3RzIFNWRydzIFNWR0xvYWQvU1ZHRXJyb3IgZXZl
bnQgc3VwcG9ydCwgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgaW5mbHVlbmNlIG9mIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQgYXR0cmlidXRlLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTFNj
cmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1yZWV4ZWN1dGlvbi1wYXNzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1ldmVudHMu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVj
dXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU2NyaXB0
RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1zcmMuaHRtbDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1l
dmVudHMtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9z
dmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1leHBl
Y3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1Njcmlw
dEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4
ZWN1dGlvbi1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcv
ZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4cGVjdGVkLmNoZWNrc3VtOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Nj
cmlwdC1zZXQtaHJlZi1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZH
U2NyaXB0RWxlbWVudDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50
L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jl
c291cmNlcy9zY3JpcHQtbG9hZC5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3Jp
cHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtcmVleGVjdXRpb24uanM6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXAx
ZmFpbC5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291
cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDJmYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9t
L1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wM3Bhc3MuanM6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0
LXNldC1ocmVmLXA0cGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRF
bGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDVmYWlsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
NXBhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNv
dXJjZXMvc2NyaXB0LXNldC1ocmVmLXA2cGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDdwYXNzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3Njcmlw
dC1zZXQtaHJlZi1wOHBhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5ZmFpbEFmdGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQt
aHJlZi1wOWZhaWxCZWZvcmUuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5cGFzcy5qczogQWRkZWQuCisgICAg
ICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVu
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1l
bnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0
aW9uLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Njcmlw
dC1zZXQtaHJlZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2Ny
aXB0RWxlbWVudC9zY3JpcHQtc2V0LWhyZWYuc3ZnOiBBZGRlZC4KKwogMjAwOC0wOS0xNSAgQ2hy
aXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
ZSBIeWF0dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Nj
cmlwdC1sb2FkLWV2ZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sCShyZXZpc2lvbiAzNjQ2
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2Fk
LWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZGVkKDApIiBv
bmVycm9yPSJlcnJlZCgwKSIgc3JjPSJyZXNvdXJjZXMvY2VydGFpbmx5ZG9lc25vdGV4aXN0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmxvYWQ9ImxvYWRl
ZCgxKSIgb25lcnJvcj0iZXJyZWQoMSkiIHNyYz0icmVzb3VyY2VzL2NlcnRhaW5seWRvZXNub3Rl
eGlzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2Fk
PSJsb2FkZWQoMikiIG9uZXJyb3I9ImVycmVkKDIpIiBzcmM9InJlc291cmNlcy9zY3JpcHQtbG9h
ZC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJs
b2FkZWQoMykiIG9uZXJyb3I9ImVycmVkKDMpIiBzcmM9InJlc291cmNlcy9zY3JpcHQtbG9hZC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJsb2Fk
ZWQoMykiIG9uZXJyb3I9ImVycmVkKDMpIiBzcmM9InJlc291cmNlcy9zY3JpcHQtbG9hZC5qcyIv
PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgIGRvY3VtZW50LndyaXRlKCc8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJsb2FkZWQoNCkiIG9uZXJyb3I9
ImVycmVkKDQpIiBzcmM9InJlc291cmNlcy9zY3JpcHQtbG9hZC5qcyI+PC9zY3JpcHQnKyc+Jyk7
CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50
L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVt
ZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNyBAQAorQ3JlYXRlZCBzY3JpcHQgZWxlbWVudCwgc2NyaXB0IGRhdGEgcGFzc2VkIGFzIHRl
eHQgY29udGVudCwgYXBwZW5kZWQ6IFBBU1MKKworUmVtb3ZlZCBlbGVtZW50LCByZWFkZCBlbGVt
ZW50LCByZW1vdmUgYWdhaW4sIHNjcmlwdCBzaG91bGRuJ3QgaGF2ZSBleGVjdXRlZDpQQVNTCisK
K0NyZWF0ZWQgc2NyaXB0IGVsZW1lbnQsIGxvYWRpbmcgZXh0ZXJuYWwgc2NyaXB0IGNvbnRlbnQs
IGFwcGVuZGVkOiBQQVNTCisKK1JlbW92ZWQgZWxlbWVudCwgcmVhZGQgZWxlbWVudCwgc2NyaXB0
IHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVkOiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRp
b24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRF
bGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVu
Y3Rpb24gcGFzcygpIHsKKyAgICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0ZXN0KTsKKworICAgIGlmIChjb250ZW50RWxlbWVudC50ZXh0Q29udGVudCA9PSAn
UEFTUycpIHsKKyAgICAgICAgY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSAnRkFJTCc7Cisg
ICAgfSBlbHNlIGlmIChjb250ZW50RWxlbWVudC50ZXh0Q29udGVudCA9PSAnRkFJTCcpIHsKKyAg
ICAgICAgY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSAnUEFTUyc7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHRlc3QgPSAi
cDEiOworICAgIHZhciBlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAg
IGUxLnRleHRDb250ZW50ID0gcGFzcy50b1N0cmluZygpICsgIiBwYXNzKCk7IjsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGUxKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLnJlbW92ZUNoaWxkKGUx
KTsKKworICAgIHRlc3QgPSAicDIiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZTEpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJoZWFkIilbMF0ucmVtb3ZlQ2hpbGQoZTEpOworCisgICAgdGVzdCA9ICJwMyI7Cisg
ICAgZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBlMy5zcmMgPSAi
cmVzb3VyY2VzL3NjcmlwdC1yZWV4ZWN1dGlvbi1wYXNzLmpzIjsKKyAgICBlMy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsgZmluaXNoKCk7IH07CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChlMyk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaCgpIHsK
KyAgICB0ZXN0ID0gInA0IjsKKworICAgIGUzLm9ubG9hZCA9ICIiOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0ucmVtb3ZlQ2hpbGQoZTMpOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZTMpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5DcmVhdGVkIHNj
cmlwdCBlbGVtZW50LCBzY3JpcHQgZGF0YSBwYXNzZWQgYXMgdGV4dCBjb250ZW50LCBhcHBlbmRl
ZDogPHNwYW4gaWQ9InAxIj5GQUlMPC9zcGFuPjwvcD4KKzxwPlJlbW92ZWQgZWxlbWVudCwgcmVh
ZGQgZWxlbWVudCwgcmVtb3ZlIGFnYWluLCBzY3JpcHQgc2hvdWxkbid0IGhhdmUgZXhlY3V0ZWQ6
PHNwYW4gaWQ9InAyIj5QQVNTPC9zcGFuPjwvcD4KKzxwPkNyZWF0ZWQgc2NyaXB0IGVsZW1lbnQs
IGxvYWRpbmcgZXh0ZXJuYWwgc2NyaXB0IGNvbnRlbnQsIGFwcGVuZGVkOiA8c3BhbiBpZD0icDMi
PkZBSUw8L3NwYW4+PC9wPgorPHA+UmVtb3ZlZCBlbGVtZW50LCByZWFkZCBlbGVtZW50LCBzY3Jp
cHQgc2hvdWxkbid0IGhhdmUgZXhlY3V0ZWQ6IDxzcGFuIGlkPSJwNCI+UEFTUzwvc3Bhbj48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0
RWxlbWVudC9zY3JpcHQtc2V0LXNyYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtc3JjLmh0bWwJKHJldmlzaW9uIDM2
NDY4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LXNl
dC1zcmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAKICAgICB2YXIgZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic2NyaXB0IiAp
OwogICAgIGUzLnR5cGUgID0gInRleHQvamF2YXNjcmlwdCI7Ci0gICAgZTMuc3JjID0gInJlc291
cmNlcy9zY3JpcHQtc2V0LXNyYy1wOGZhaWxCZWZvcmUuanMiOworICAgIGUzLnNyYyA9ICJyZXNv
dXJjZXMvc2NyaXB0LXNldC1zcmMtcDlmYWlsQmVmb3JlLmpzIjsKICAgICBlMy5zcmMgPSAicmVz
b3VyY2VzL3NjcmlwdC1zZXQtc3JjLXA5cGFzcy5qcyI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChlMyk7CiAgICAgZTMuc3JjID0gInJl
c291cmNlcy9zY3JpcHQtc2V0LXNyYy1wOWZhaWxBZnRlci5qcyI7CkBAIC00Myw3ICs0Myw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGlkPSJzMiIg
c3JjPSJyZXNvdXJjZXMvdGhpc1Nob3VsZE5vdEV4aXN0Lm51bGwiPjwvc2NyaXB0PgogPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGlkPSJzNSIgc3JjPSJyZXNvdXJjZXMvc2NyaXB0LXNl
dC1zcmMtcDVwYXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBpZD0iczMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGlkPSJz
NCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InM0Ii8+CiA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InM2Ij48L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5IG9ubG9hZD0idGVzdCgpOyI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
U2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXJlZXhlY3V0aW9uLXBhc3MuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvcmVzb3VyY2Vz
L3NjcmlwdC1yZWV4ZWN1dGlvbi1wYXNzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1yZWV4ZWN1dGlvbi1w
YXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0ZXN0KS50ZXh0Q29udGVudCA9ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50
cy1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzIyNGI4YzU5YTcz
MGIwZTNiZDQyZDcwNDM2MDY4MjJmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
cmVleGVjdXRpb24tZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24t
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3RlZC5j
aGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorYjQ3YmViNDkwNzkxYjZiMzdlZDcw
NmZjNzNkNGI4MTcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi1l
eHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
c3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi1leHBlY3RlZC5jaGVja3N1
bQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1Nj
cmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACitkOTBkYzA5N2Y1MThiNmNlZTc1MWYxNTM4OTIwZGNkMQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQt
YW5kLWVycm9yLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGVzdCBsb2FkIGFuZCBl
cnJvciBldmVudCBoYW5kbGluZyB3aXRoIFNWR1NjcmlwdEVsZW1lbnQKK1BBU1MKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3It
ZXZlbnRzLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy5zdmcJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9y
LWV2ZW50cy5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI0IEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiPz4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayIgeG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIG9uZXJyb3I9
ImVycm9yRXZlbnRIYW5kbGVyKGV2dCkiIG9ubG9hZD0idGVzdExvYWRFdmVudE5vdEZpcmVkKCki
PgorPGRlZnM+Cis8dGl0bGU+Jmx0O1NDUklQVCZndDsgbG9hZCBhbmQgZXJyb3IgZXZlbnRzPC90
aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3ZhciBzdGF0dXNfID0gbmV3
IEFycmF5KCk7Cit2YXIgc2hvdWxkQ29udGludWUgPSAxOwordmFyIGxhc3RUZXN0ID0gMDsKKwor
Zm9yIChpID0gMDsgaSAmbHQ7IDc7ICsraSkKKyAgICBzdGF0dXNfW2ldID0gIiI7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCitmdW5jdGlvbiB0ZXN0TG9hZEV2ZW50Tm90RmlyZWQoKSB7CisgICAgc2hvdWxkQ29udGlu
dWUgPSAwOworfQorCitmdW5jdGlvbiBsb2FkRXZlbnRIYW5kbGVyKGV2dCkgeworICAgIHN0YXR1
c19bZXZ0LnRhcmdldC5pZF0gKz0gIkwiOworfQorCitmdW5jdGlvbiBlcnJvckV2ZW50SGFuZGxl
cihldnQpIHsKKyAgICBzdGF0dXNfW2V2dC50YXJnZXQuaWRdICs9ICJFIjsKKworICAgIGlmIChs
YXN0VGVzdCkKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoJ2VuZFRlc3QoKScsIDApOworfQor
CitmdW5jdGlvbiBlbmRUZXN0KCkgeworICAgIHZhciBmYWlsdXJlcyA9ICIiOworCisgICAgaWYg
KHN0YXR1c19bMF0gIT0gIkxFIikKKyAgICAgICAgZmFpbHVyZXMgKz0gIjAgIjsKKyAgICBpZiAo
c3RhdHVzX1sxXSAhPSAiRSIpCisgICAgICAgIGZhaWx1cmVzICs9ICIxICI7CisgICAgaWYgKHN0
YXR1c19bMl0gIT0gIkwiKQorICAgICAgICBmYWlsdXJlcyArPSAiMiAiOworICAgIGlmIChzdGF0
dXNfWzNdICE9ICJMIikKKyAgICAgICAgZmFpbHVyZXMgKz0gIjMgIjsKKyAgICBpZiAoc3RhdHVz
X1s0XSAhPSAiTCIpCisgICAgICAgIGZhaWx1cmVzICs9ICI0ICI7CisgICAgaWYgKHN0YXR1c19b
NV0gIT0gIkxFIikKKyAgICAgICAgZmFpbHVyZXMgKz0gIjUgIjsKKyAgICBpZiAoc3RhdHVzX1s2
XSAhPSAiRSIpCisgICAgICAgIGZhaWx1cmVzICs9ICI2ICI7CisKKyAgICB2YXIgcmVzdWx0cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIik7CisgICAgaWYgKGZhaWx1cmVzKQor
ICAgICAgICByZXN1bHRzLmlubmVySFRNTCA9ICJGQUlMOiBUaGUgZm9sbG93aW5nIHRlc3RzIGZh
aWxlZDogIiArIGZhaWx1cmVzOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0cy5pbm5lckhUTUwg
PSAiUEFTUyI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxhc3RU
ZXN0QmVmb3JlUm9vdEVsZW1lbnRMb2FkZWQoKSB7CisgICAgLy8gQXNzdXJlIHRoZSBTVkdTVkdF
bGVtZW50IG9ubG9hZCBoYW5kbGVyIGRvZXNuJ3QgZmlyZSwgYmVjYXVzZSBvbmUgc2NyaXB0IGVs
ZW1lbnQgcG9pbnRzIHRvIGEgbm90LWV4aXN0YW50CisgICAgLy8gcmVzb3VyY2UsIGFuZCBzcGVj
aWZpZXMgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD10cnVlLiBUaGlzIHByZXZlbnRzIFNWR0xv
YWQgZnJvbSBiZWluZyBkaXNwYXRjaGVkLgorICAgIHdpbmRvdy5zZXRUaW1lb3V0KCdzdGFydER5
bmFtaWNUZXN0cygpJywgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0RHluYW1pY1Rlc3RzKCkgewor
ICAgIGlmIChzaG91bGRDb250aW51ZSkgeworICAgICAgICB2YXIgc2NyaXB0RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3Zn
OnNjcmlwdCIpOworICAgICAgICBzY3JpcHRFbGVtZW50LmlkID0gNDsKKyAgICAgICAgc2NyaXB0
RWxlbWVudC50eXBlLmJhc2VWYWwgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICAgICAgc2NyaXB0
RWxlbWVudC5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIjsKKworICAg
ICAgICBzY3JpcHRFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKGxvYWRFdmVudCkgeworICAgICAg
ICAgICAgbG9hZEV2ZW50SGFuZGxlcihsb2FkRXZlbnQpOworICAgICAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoJ2NvbnRpbnVlRHluYW1pY1Rlc3QxKCknLCAwKTsKKyAgICAgICAgfTsKKworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGVmcyIpWzBdLmFwcGVuZENoaWxk
KHNjcmlwdEVsZW1lbnQpOyAKKyAgICB9IGVsc2UgeyAKKyAgICAgICAgdmFyIHJlc3VsdHMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpOworICAgICAgICByZXN1bHRzLmlubmVy
SFRNTCA9ICJGQUlMOiBTVkdMb2FkIGV2ZW50IG9uIHJvb3QgZWxlbWVudCBzaG91bGRuJ3QgZmly
ZS4iOworCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjb250aW51ZUR5bmFtaWNUZXN0MSgpIHsKKyAgICB2YXIgc2NyaXB0RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3Zn
OnNjcmlwdCIpOworICAgIHNjcmlwdEVsZW1lbnQuaWQgPSA1OworICAgIHNjcmlwdEVsZW1lbnQu
dHlwZS5iYXNlVmFsID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgc2NyaXB0RWxlbWVudC5ocmVm
LmJhc2VWYWwgPSAicmVzb3VyY2VzL25vdC1leGlzdGFudC5qcyI7CisKKyAgICBzY3JpcHRFbGVt
ZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKGxvYWRFdmVudCkgeworICAgICAgICBsb2FkRXZlbnRIYW5k
bGVyKGxvYWRFdmVudCk7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCdjb250aW51ZUR5bmFt
aWNUZXN0MigpJywgMCk7CisgICAgfTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxlbWVudCk7ICAKK30KKworZnVuY3Rp
b24gY29udGludWVEeW5hbWljVGVzdDIoKSB7CisgICAgdmFyIHNjcmlwdEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2Zzpz
Y3JpcHQiKTsKKyAgICBzY3JpcHRFbGVtZW50LmlkID0gNjsKKyAgICBzY3JpcHRFbGVtZW50LnR5
cGUuYmFzZVZhbCA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgIHNjcmlwdEVsZW1lbnQuaHJlZi5i
YXNlVmFsID0gInJlc291cmNlcy9ub3QtZXhpc3RhbnQuanMiOworICAgIHNjcmlwdEVsZW1lbnQu
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5iYXNlVmFsID0gdHJ1ZTsKKworICAgIGxhc3RUZXN0
ID0gMTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGVmcyIpWzBdLmFwcGVu
ZENoaWxkKHNjcmlwdEVsZW1lbnQpOyAgCit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjAiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5r
OmhyZWY9InJlc291cmNlcy9jZXJ0YWlubHlkb2Vzbm90ZXhpc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iMSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkPSJ0cnVlIiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIgeGxpbms6aHJlZj0icmVz
b3VyY2VzL2NlcnRhaW5seWRvZXNub3RleGlzdHRvby5qcyIvPgorPHNjcmlwdCBpZD0iMiIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIgeGxpbms6
aHJlZj0icmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjMi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD0idHJ1ZSIg
b25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCk7IGxhc3RUZXN0QmVmb3JlUm9vdEVsZW1lbnRM
b2FkZWQoKTsiIHhsaW5rOmhyZWY9InJlc291cmNlcy9zY3JpcHQtbG9hZC5qcyIvPgorPC9kZWZz
PgorPGZvcmVpZ25PYmplY3Q+CitUZXN0IGxvYWQgYW5kIGVycm9yIGV2ZW50IGhhbmRsaW5nIHdp
dGggU1ZHU2NyaXB0RWxlbWVudAorPHhodG1sOmhyLz4KKzx4aHRtbDpwIGlkPSJyZXN1bHRzIj5G
QUlMOiBUZXN0IG5ldmVyIGZpbmlzaGVkLjwveGh0bWw6cD4KKzwvZm9yZWlnbk9iamVjdD4KKzwv
c3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1y
ZWV4ZWN1dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXJl
ZXhlY3V0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitDcmVh
dGVkIHNjcmlwdCBlbGVtZW50LCBzY3JpcHQgZGF0YSBwYXNzZWQgYXMgdGV4dCBjb250ZW50LCBh
cHBlbmRlZDogUEFTUworCitSZW1vdmVkIGVsZW1lbnQsIHJlYWRkIGVsZW1lbnQsIHJlbW92ZSBh
Z2Fpbiwgc2NyaXB0IHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVkOlBBU1MKKworQ3JlYXRlZCBzY3Jp
cHQgZWxlbWVudCwgbG9hZGluZyBleHRlcm5hbCBzY3JpcHQgY29udGVudCwgYXBwZW5kZWQ6IFBB
U1MKKworUmVtb3ZlZCBlbGVtZW50LCByZWFkZCBlbGVtZW50LCBzY3JpcHQgc2hvdWxkbid0IGhh
dmUgZXhlY3V0ZWQ6IFBBU1MKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxl
bWVudC9zY3JpcHQtcmVleGVjdXRpb24uc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24uc3ZnCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1
dGlvbi5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCI/PgorPHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
IiB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgb25sb2FkPSJzdGFy
dFRlc3QoKSI+Cis8ZGVmcz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0
aW9uIHBhc3MoKSB7CisgICAgdmFyIGNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGVzdCk7CisKKyAgICBpZiAoY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ1BB
U1MnKSB7CisgICAgICAgIGNvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ID0gJ0ZBSUwnOworICAg
IH0gZWxzZSBpZiAoY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ0ZBSUwnKSB7CisgICAg
ICAgIGNvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ID0gJ1BBU1MnOworICAgIH0KK30KKworZnVu
Y3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHRlc3Qg
PSAicDEiOworICAgIHZhciBlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAic3ZnOnNjcmlwdCIpOworICAgIGUxLnRleHRDb250ZW50ID0g
cGFzcy50b1N0cmluZygpICsgIiBwYXNzKCk7IjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiZGVmcyIpWzBdLmFwcGVuZENoaWxkKGUxKTsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiZGVmcyIpWzBdLnJlbW92ZUNoaWxkKGUxKTsKKworICAgIHRlc3QgPSAi
cDIiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5k
Q2hpbGQoZTEpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0u
cmVtb3ZlQ2hpbGQoZTEpOworCisgICAgdGVzdCA9ICJwMyI7CisgICAgbWVzc2FnZSA9ICJQQVNT
IjsKKworICAgIGUzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJzdmc6c2NyaXB0Iik7CisgICAgZTMuZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5iYXNlVmFsID0gdHJ1ZTsgLy8gT3RoZXJ3aGlzZSBTVkdMb2FkIGV2ZW50IHdpbGwgYmUg
ZmlyZWQgaW1tZWRpYXRlbHkuCisgICAgZTMuaHJlZi5iYXNlVmFsID0gInJlc291cmNlcy9zY3Jp
cHQtcmVleGVjdXRpb24uanMiOworICAgIGUzLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBmaW5pc2go
KTsgfQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5k
Q2hpbGQoZTMpOworfQorCitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgdGVzdCA9ICJwNCI7Cisg
ICAgbWVzc2FnZSA9ICJGQUlMIjsKKworICAgIGUzLm9ubG9hZCA9ICIiOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0ucmVtb3ZlQ2hpbGQoZTMpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoZTMpOwor
fQorPC9zY3JpcHQ+Cis8L2RlZnM+Cis8Zm9yZWlnbk9iamVjdD4KKzx4aHRtbDpwPkNyZWF0ZWQg
c2NyaXB0IGVsZW1lbnQsIHNjcmlwdCBkYXRhIHBhc3NlZCBhcyB0ZXh0IGNvbnRlbnQsIGFwcGVu
ZGVkOiA8eGh0bWw6c3BhbiBpZD0icDEiPkZBSUw8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPHho
dG1sOnA+UmVtb3ZlZCBlbGVtZW50LCByZWFkZCBlbGVtZW50LCByZW1vdmUgYWdhaW4sIHNjcmlw
dCBzaG91bGRuJ3QgaGF2ZSBleGVjdXRlZDo8eGh0bWw6c3BhbiBpZD0icDIiPlBBU1M8L3hodG1s
OnNwYW4+PC94aHRtbDpwPgorPHhodG1sOnA+Q3JlYXRlZCBzY3JpcHQgZWxlbWVudCwgbG9hZGlu
ZyBleHRlcm5hbCBzY3JpcHQgY29udGVudCwgYXBwZW5kZWQ6IDx4aHRtbDpzcGFuIGlkPSJwMyI+
RkFJTDwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8eGh0bWw6cD5SZW1vdmVkIGVsZW1lbnQsIHJl
YWRkIGVsZW1lbnQsIHNjcmlwdCBzaG91bGRuJ3QgaGF2ZSBleGVjdXRlZDogPHhodG1sOnNwYW4g
aWQ9InA0Ij5QQVNTPC94aHRtbDpzcGFuPjwveGh0bWw6cD4KKzwvZm9yZWlnbk9iamVjdD4KKzwv
c3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1z
ZXQtaHJlZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVm
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorUGFyc2VyLWNyZWF0
ZWQgc2NyaXB0IGVsZW1lbnRzOgorCitBbHJlYWR5IGNvbnRhaW5pbmcgdGV4dDogUEFTUworCitB
bHJlYWR5IHNwZWNpZnlpbmcgbWlzc2luZyBzb3VyY2U6IFBBU1MKKworQWxyZWFkeSBzcGVjaWZ5
aW5nIHZhbGlkIHNvdXJjZTogUEFTUworCitObyB0ZXh0IGFuZCBubyBzb3VyY2U6IFBBU1MKKwor
U2VsZi1jbG9zaW5nIDxzY3JpcHQ+IHRhZzogUEFTUworCitVc2luZyBzZXRBdHRyaWJ1dGU6IFBB
U1MKKworRHluYW1pY2FsbHktaW5zZXJ0ZWQgc2NyaXB0IGVsZW1lbnRzOgorCitTZXQgYmVmb3Jl
IGluc2VydGlvbjogUEFTUworCitTZXQgYWZ0ZXIgaW5zZXJ0aW9uOiBQQVNTCisKK1NldCB0d2lj
ZSBiZWZvcmUgYW5kIG9uY2UgYWZ0ZXIgaW5zZXJ0aW9uOiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLnN2Zwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVm
LnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVu
dC9zY3JpcHQtc2V0LWhyZWYuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiPz4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94bGluayIgeG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
IG9ubG9hZD0idGVzdCgpIj4KKzxkZWZzPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgordmFyIHA1cmVzdWx0ID0gIkZBSUwiOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNSIpLmlubmVy
SFRNTCA9IHA1cmVzdWx0OworICAgIAorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzMSIp
LmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXAxZmFpbC5qcyI7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMyIikuaHJlZi5iYXNlVmFsID0gInJlc291cmNl
cy9zY3JpcHQtc2V0LWhyZWYtcDJmYWlsLmpzIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiczUiKS5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNWZhaWwu
anMiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzMyIpLmhyZWYuYmFzZVZhbCA9ICJy
ZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXAzcGFzcy5qcyI7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInM0IikuaHJlZi5iYXNlVmFsID0gInJlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYt
cDRwYXNzLmpzIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczYiKS5zZXRBdHRyaWJ1
dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsICJ4bGluazpocmVmIiwgInJlc291
cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDZwYXNzLmpzIik7CisKKyAgICB2YXIgZTEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZzpzY3Jp
cHQiKTsKKyAgICBlMS50eXBlLmJhc2VWYWwgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICBlMS5o
cmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wN3Bhc3MuanMiOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoZTEp
OworICAgIAorICAgIHZhciBlMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAic3ZnOnNjcmlwdCIpOworICAgIGUyLnR5cGUuYmFzZVZhbCA9
ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJk
ZWZzIilbMF0uYXBwZW5kQ2hpbGQoZTIpOworICAgIGUyLmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJj
ZXMvc2NyaXB0LXNldC1ocmVmLXA4cGFzcy5qcyI7CisgICAgCisgICAgdmFyIGUzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdmc6c2Ny
aXB0Iik7CisgICAgZTMudHlwZS5iYXNlVmFsID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgZTMu
aHJlZi5iYXNlVmFsID0gInJlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDlmYWlsQmVmb3JlLmpz
IjsKKyAgICBlMy5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wOXBh
c3MuanMiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBw
ZW5kQ2hpbGQoZTMpOworICAgIGUzLmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvc2NyaXB0LXNl
dC1ocmVmLXA5ZmFpbEFmdGVyLmpzIjsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGlkPSJzMSI+CisvLyBQYXJzZXItY3JlYXRlZC4gSGFzIHRleHQgc28gaXQg
c2hvdWxkIG5vdCBsb2FkIHVwb24gc2V0dGluZyBocmVmLgorPC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InMyIiB4bGluazpocmVmPSJyZXNvdXJjZXMvdGhpc1No
b3VsZE5vdEV4aXN0Lm51bGwiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIGlkPSJzNSIgeGxpbms6aHJlZj0icmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNXBhc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGlkPSJzMyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InM0Ii8+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InM2Ij48L3NjcmlwdD4KKzwvZGVmcz4KKzxmb3Jl
aWduT2JqZWN0PgorPHhodG1sOnA+UGFyc2VyLWNyZWF0ZWQgc2NyaXB0IGVsZW1lbnRzOjwveGh0
bWw6cD4KKzx4aHRtbDpwPkFscmVhZHkgY29udGFpbmluZyB0ZXh0OiA8eGh0bWw6c3BhbiBpZD0i
cDEiPlBBU1M8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPHhodG1sOnA+QWxyZWFkeSBzcGVjaWZ5
aW5nIG1pc3Npbmcgc291cmNlOiA8eGh0bWw6c3BhbiBpZD0icDIiPlBBU1M8L3hodG1sOnNwYW4+
PC94aHRtbDpwPgorPHhodG1sOnA+QWxyZWFkeSBzcGVjaWZ5aW5nIHZhbGlkIHNvdXJjZTogPHho
dG1sOnNwYW4gaWQ9InA1Ij5GQUlMPC94aHRtbDpzcGFuPjwveGh0bWw6cD4KKzx4aHRtbDpwPk5v
IHRleHQgYW5kIG5vIHNvdXJjZTogPHhodG1sOnNwYW4gaWQ9InAzIj5GQUlMPC94aHRtbDpzcGFu
PjwveGh0bWw6cD4KKzx4aHRtbDpwPlNlbGYtY2xvc2luZyAmbHQ7c2NyaXB0Jmd0OyB0YWc6IDx4
aHRtbDpzcGFuIGlkPSJwNCI+RkFJTDwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8eGh0bWw6cD5V
c2luZyBzZXRBdHRyaWJ1dGU6IDx4aHRtbDpzcGFuIGlkPSJwNiI+RkFJTDwveGh0bWw6c3Bhbj48
L3hodG1sOnA+Cis8eGh0bWw6aHIvPgorPHhodG1sOnA+RHluYW1pY2FsbHktaW5zZXJ0ZWQgc2Ny
aXB0IGVsZW1lbnRzOjwveGh0bWw6cD4KKzx4aHRtbDpwPlNldCBiZWZvcmUgaW5zZXJ0aW9uOiA8
eGh0bWw6c3BhbiBpZD0icDciPkZBSUw8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPHhodG1sOnA+
U2V0IGFmdGVyIGluc2VydGlvbjogPHhodG1sOnNwYW4gaWQ9InA4Ij5GQUlMPC94aHRtbDpzcGFu
PjwveGh0bWw6cD4KKzx4aHRtbDpwPlNldCB0d2ljZSBiZWZvcmUgYW5kIG9uY2UgYWZ0ZXIgaW5z
ZXJ0aW9uOiA8eGh0bWw6c3BhbiBpZD0icDkiPkZBSUw8L3hodG1sOnNwYW4+PC94aHRtbDpwPgor
PC9mb3JlaWduT2JqZWN0PgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Nj
cmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXJlZXhl
Y3V0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxl
bWVudC9yZXNvdXJjZXMvc2NyaXB0LXJlZXhlY3V0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtcmVleGVj
dXRpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRlc3QpLnRleHRDb250ZW50ID0gbWVzc2FnZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXAxZmFpbC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3Vy
Y2VzL3NjcmlwdC1zZXQtaHJlZi1wMWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMWZh
aWwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwMSIpLmlubmVySFRNTCA9ICJGQUlMIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZH
U2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXAyZmFpbC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3Nj
cmlwdC1zZXQtaHJlZi1wMmZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMmZhaWwuanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMiIp
LmlubmVySFRNTCA9ICJGQUlMIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXAzcGFzcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1z
ZXQtaHJlZi1wM3Bhc3MuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NW
R1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wM3Bhc3MuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMyIpLmlubmVy
SFRNTCA9ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVu
dC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA0cGFzcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJl
Zi1wNHBhc3MuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Njcmlw
dEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNHBhc3MuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNCIpLmlubmVySFRNTCA9
ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNv
dXJjZXMvc2NyaXB0LXNldC1ocmVmLXA1ZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNWZh
aWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1l
bnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNWZhaWwuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNSIpLmlubmVySFRNTCA9ICJGQUlM
IChsb2FkZWQgd2hlbiBpdCBzaG91bGRuJ3QgaGF2ZSkiOwpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDVwYXNzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNv
dXJjZXMvc2NyaXB0LXNldC1ocmVmLXA1cGFzcy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA1
cGFzcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorcDVyZXN1bHQgPSAiUEFTUyI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3Njcmlw
dC1zZXQtaHJlZi1wNnBhc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDZwYXNzLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNl
cy9zY3JpcHQtc2V0LWhyZWYtcDZwYXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDYiKS5pbm5lckhUTUwgPSAiUEFTUyI7CkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQt
aHJlZi1wN3Bhc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3Jp
cHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDdwYXNzLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3Jp
cHQtc2V0LWhyZWYtcDdwYXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicDciKS5pbm5lckhUTUwgPSAiUEFTUyI7CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
OHBhc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVt
ZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDhwYXNzLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0
LWhyZWYtcDhwYXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicDgiKS5pbm5lckhUTUwgPSAiUEFTUyI7CkluZGV4OiBMYXlvdXRUZXN0cy9z
dmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wOWZhaWxB
ZnRlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1l
bnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wOWZhaWxBZnRlci5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0
LXNldC1ocmVmLXA5ZmFpbEFmdGVyLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicDkiKS5pbm5lckhUTUwgPSAiRkFJTCAoYWZ0ZXIgaW5zZXJ0
aW9uKSI7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3Vy
Y2VzL3NjcmlwdC1zZXQtaHJlZi1wOWZhaWxCZWZvcmUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYt
cDlmYWlsQmVmb3JlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdT
Y3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDlmYWlsQmVmb3JlLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDkiKS5p
bm5lckhUTUwgPSAiRkFJTCAoYmVmb3JlIGluc2VydGlvbikiOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDlwYXNz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9y
ZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5cGFzcy5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVm
LXA5cGFzcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInA5IikuaW5uZXJIVE1MID0gIlBBU1MiOwo=
</data>
<flag name="review"
          id="10472"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23595</attachid>
            <date>2008-09-19 20:00:31 -0700</date>
            <delta_ts>2008-09-19 20:30:54 -0700</delta_ts>
            <desc>Patch 2/2 - v2: Let SVGScriptElement use the new ScriptElement base class</desc>
            <filename>FixSVGScriptElement.diff</filename>
            <type>text/plain</type>
            <size>50655</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDM2Njk0KQorKysgV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNyArMzksMjYgQEAK
ICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICAgICAgdmlydHVhbCB+U1ZHU2NyaXB0RWxlbWVudCgpOwogCi0gICAgICAgIHZvaWQg
c2V0Q3JlYXRlZEJ5UGFyc2VyKGJvb2wpIHsgfQorICAgICAgICB2b2lkIHNldENyZWF0ZWRCeVBh
cnNlcihib29sKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc2NyaXB0Q29udGVudCgpIGNvbnN0
OwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKTsKKwogICAgICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OwogICAgICAgICB2b2lk
IHNldFR5cGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBnZXRTdWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmluZ3MoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGNo
YXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDM2Njk0KQorKysgV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5j
bHVkZSAiU1ZHU2NyaXB0RWxlbWVudC5oIgorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDE2ICs0Miwx
MSBAQAogewogfQogCi1TdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6dHlwZSgpIGNvbnN0Cit2b2lk
IFNWR1NjcmlwdEVsZW1lbnQ6OnNldENyZWF0ZWRCeVBhcnNlcihib29sIGNyZWF0ZWRCeVBhcnNl
cikKIHsKLSAgICByZXR1cm4gbV90eXBlOworICAgIG1fZGF0YS5zZXRDcmVhdGVkQnlQYXJzZXIo
Y3JlYXRlZEJ5UGFyc2VyKTsKIH0KIAotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpzZXRUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSkKLXsKLSAgICBtX3R5cGUgPSB0eXBlOwotfQotCiBTdHJpbmcgU1ZH
U2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGF0
YS5zY3JpcHRDb250ZW50KCk7CkBAIC01Nyw3ICs1NCw5IEBACiAKIHZvaWQgU1ZHU2NyaXB0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKQorICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOworCisgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjp0eXBlQXR0cikKICAgICAgICAgc2V0VHlwZShhdHRyLT52YWx1ZSgpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cikpCkBAIC02OSwxMSArNjgsODcgQEAKICAgICB9CiB9CiAKK3ZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKK3sKKyAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKwor
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAg
ICAgICBoYW5kbGVTb3VyY2VBdHRyaWJ1dGUobV9kYXRhLCBocmVmKCkpOworICAgIGVsc2UgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgICAgIC8vIEhhbmRsZSBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICdleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkJyBhdHRyaWJ1dGUuIE9ubHkgcG9zc2libGUgY2FzZTogY2hhbmdpbmcg
ZnJvbSAndHJ1ZScgdG8gJ2ZhbHNlJworICAgICAgICAvLyBjYXVzZXMgYW4gaW1tZWRpYXRlIGRp
c3BhdGNoIG9mIHRoZSBTVkdMb2FkIGV2ZW50LiBJZiB0aGUgYXR0cmlidXRlIHZhbHVlIHdhcyAn
ZmFsc2UnIGJlZm9yZSBpbnNlcnRpbmcgdGhlIHNjcmlwdCBlbGVtZW50CisgICAgICAgIC8vIGlu
IHRoZSBkb2N1bWVudCwgdGhlIFNWR0xvYWQgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwYXRj
aGVkLgorICAgICAgICBpZiAoIWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSAm
JiAhbV9kYXRhLmhhdmVGaXJlZExvYWRFdmVudCgpICYmICFtX2RhdGEuY3JlYXRlZEJ5UGFyc2Vy
KCkpIHsKKyAgICAgICAgICAgIG1fZGF0YS5zZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Cisg
ICAgICAgICAgICBBU1NFUlQoaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkpOworCisgICAg
ICAgICAgICBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSgpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAg
ICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIFNjcmlwdEVsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KG1fZGF0YSwgc291cmNlQXR0cmlidXRlVmFsdWUoKSk7CisK
KyAgICBpZiAobV9kYXRhLmNyZWF0ZWRCeVBhcnNlcigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBFdmVudHVhbGx5IHNlbmQgU1ZHTG9hZCBldmVudCBub3cgZm9yIHRoZSBkeW5hbWljYWxs
eSBpbnNlcnRlZCBzY3JpcHQgZWxlbWVudAorICAgIGlmICghZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEJhc2VWYWx1ZSgpKSB7CisgICAgICAgIG1fZGF0YS5zZXRIYXZlRmlyZWRMb2FkRXZlbnQo
dHJ1ZSk7CisgICAgICAgIHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKCk7CisgICAgfQorfQor
Cit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQoreworICAgIFNW
R0VsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICBTY3JpcHRFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50KG1fZGF0YSk7Cit9CisKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQoreworICAgIFNjcmlwdEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChtX2RhdGEpOworICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7Cit9CisKK2Jvb2wgU1ZHU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0
cmlidXRlKiBhdHRyKSBjb25zdAoreworICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gc291cmNl
QXR0cmlidXRlVmFsdWUoKTsKK30KKwordm9pZCBTVkdTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKQoreworICAgIFNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bihtX2RhdGEsIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkpOworICAgIFNWR0VsZW1lbnQ6OmZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpOworCisgICAgLy8gQSBTVkdMb2FkIGV2ZW50IGhhcyBiZWVuIGZp
cmVkIGJ5IFNWR0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbi4KKyAgICBpZiAoIWV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSkKKyAgICAgICAgbV9kYXRhLnNldEhhdmVG
aXJlZExvYWRFdmVudCh0cnVlKTsKK30KKworU3RyaW5nIFNWR1NjcmlwdEVsZW1lbnQ6OnR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgbV90eXBlID0gdHlwZTsKK30K
Kwogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpnZXRTdWJyZXNvdXJjZUF0dHJpYnV0ZVN0cmluZ3Mo
VmVjdG9yPFN0cmluZz4mIHVybHMpIGNvbnN0CiB7CiAgICAgdXJscy5hcHBlbmQoaHJlZigpKTsK
IH0KIAorYm9vbCBTVkdTY3JpcHRFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMo
KQoreworICAgIHJldHVybiAhZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpIHx8
IG1fZGF0YS5oYXZlRmlyZWRMb2FkRXZlbnQoKTsKK30KKwogU3RyaW5nIFNWR1NjcmlwdEVsZW1l
bnQ6OnNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gaHJlZigpOwpA
QCAtOTYsMTUgKzE3MSwzNyBAQAogCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9h
ZEV2ZW50KCkKIHsKLSAgICAvLyBUT0RPIQotICAgIC8vIGRpc3BhdGNoU1ZHRXZlbnQobG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKTsKKworICAgIGlmIChtX2RhdGEu
Y3JlYXRlZEJ5UGFyc2VyKCkpCisgICAgICAgIEFTU0VSVChleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkICE9IG1fZGF0YS5oYXZlRmlyZWRMb2FkRXZlbnQoKSk7CisgICAgZWxzZSBpZiAobV9kYXRh
LmhhdmVGaXJlZExvYWRFdmVudCgpKSB7CisgICAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZmly
ZWQgYW4gbG9hZCBldmVudCBhbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCBpcyBzZXQgdG8g
J3RydWUnCisgICAgICAgIC8vIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgaGFzIGJlZW4gbW9k
aWZpZWQgd2hpbGUgbG9hZGluZyB0aGUgPHNjcmlwdD4uIERvbid0IGRpc3BhdGNoIHR3aWNlLgor
ICAgICAgICBpZiAoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBIVE1MIGFuZCBTVkcgZGlmZmVyIGNvbXBsZXRseSBpbiB0aGUg
J29ubG9hZCcgZXZlbnQgaGFuZGxpbmcgb2YgPHNjcmlwdD4gZWxlbWVudHMuCisgICAgLy8gSFRN
TCBmaXJlcyB0aGUgJ2xvYWQnIGV2ZW50IGFmdGVyIGl0IHN1Y2Vzc2Z1bGx5IGxvYWRlZCBhIHJl
bW90ZSByZXNvdXJjZSwgb3RoZXJ3aGlzZSBhbiBlcnJvciBldmVudC4KKyAgICAvLyBTVkcgZmly
ZXMgdGhlIFNWR0xvYWQgZXZlbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgcGFyc2luZyB0aGUgPHNjcmlw
dD4gZWxlbWVudCwgaWYgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgIC8vIGlzIHNldCB0
byAnZmFsc2UnLCBvdGhlcndoaXNlIGl0IGRpc3BhdGNoZXMgdGhlICdTVkdMb2FkJyBldmVudCBq
dXN0IGFmdGVyIGxvYWRpbmcgdGhlIHJlbW90ZSByZXNvdXJjZS4KKyAgICBpZiAoZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCkgeworICAgICAgICBBU1NFUlQoIW1fZGF0YS5oYXZlRmlyZWRMb2Fk
RXZlbnQoKSk7CisKKyAgICAgICAgLy8gRGlzcGF0Y2ggU1ZHTG9hZCBldmVudAorICAgICAgICBt
X2RhdGEuc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUpOworICAgICAgICBBU1NFUlQoaGF2ZUxv
YWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkpOworCisgICAgICAgIHNlbmRTVkdMb2FkRXZlbnRJZlBv
c3NpYmxlKCk7CisgICAgfQogfQogCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJy
b3JFdmVudCgpCiB7Ci0gICAgLy8gVE9ETyEKLSAgICAvLyBkaXNwYXRjaFNWR0V2ZW50KGVycm9y
RXZlbnQsIHRydWUsIGZhbHNlKTsKKyAgICBkaXNwYXRjaEV2ZW50Rm9yVHlwZShFdmVudE5hbWVz
OjplcnJvckV2ZW50LCB0cnVlLCBmYWxzZSk7CiB9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM2Njk0KQor
KysgV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE0LDYgKzIxNCw5IEBACiAgCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRF
dmVudCgpCiB7CisgICAgQVNTRVJUKCFtX2RhdGEuaGF2ZUZpcmVkTG9hZEV2ZW50KCkpOworICAg
IG1fZGF0YS5zZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7CisKICAgICBkaXNwYXRjaEV2ZW50
Rm9yVHlwZShsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNjY5NCkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAsIG1fY2FjaGVkU2NyaXB0
KDApCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihmYWxzZSkKICAgICAsIG1fZXZhbHVhdGVkKGZh
bHNlKQorICAgICwgbV9maXJlZExvYWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RWxl
bWVudCk7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CkBAIC0xNDEsNiArMTQyLDExIEBACiAgICAg
QVNTRVJUKCFtX2NhY2hlZFNjcmlwdCk7CiAgICAgbV9jYWNoZWRTY3JpcHQgPSBkb2N1bWVudC0+
ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc291cmNlVXJsLCBzY3JpcHRDaGFyc2V0KCkpOwog
CisgICAgLy8gbV9jcmVhdGVkQnlQYXJzZXIgaXMgbmV2ZXIgcmVzZXQgLSBhbHdheXMgcmVzaWVk
IGF0IHRoZSBpbml0aWFsIHZhbHVlIHNldCB3aGlsZSBwYXJzaW5nLgorICAgIC8vIG1fZXZhbHVh
dGVkIGlzIGxlZnQgdW50b3VjaGVkIGFzIHdlbGwgdG8gYXZvaWQgc2NyaXB0IHJlZXhlY3V0aW9u
LCBpZiBhIDxzY3JpcHQ+IGVsZW1lbnQKKyAgICAvLyBpcyByZW1vdmVkIGFuZCByZWFwcGVuZGVk
IHRvIHRoZSBkb2N1bWVudC4KKyAgICBtX2ZpcmVkTG9hZCA9IGZhbHNlOworCiAgICAgaWYgKG1f
Y2FjaGVkU2NyaXB0KSB7CiAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDM2Njk0KQor
KysgV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3
MCw4IEBACiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsg
fQogICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGVkQnlQ
YXJzZXI7IH0KICAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29sIHZhbHVlKSB7IG1fY3Jl
YXRlZEJ5UGFyc2VyID0gdmFsdWU7IH0KKyAgICBib29sIGhhdmVGaXJlZExvYWRFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlyZWRMb2FkOyB9CisgICAgdm9pZCBzZXRIYXZlRmlyZWRMb2FkRXZl
bnQoYm9vbCBmaXJlZExvYWQpIHsgbV9maXJlZExvYWQgPSBmaXJlZExvYWQ7IH0KIAogICAgIHZv
aWQgcmVxdWVzdFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCk7CiAgICAgdm9pZCBldmFs
dWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKQEAgLTg0LDYgKzg2LDcgQEAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IG1fY2FjaGVkU2NyaXB0OwogICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CiAgICAgYm9v
bCBtX2V2YWx1YXRlZDsKKyAgICBib29sIG1fZmlyZWRMb2FkOwogfTsKIAogfQpJbmRleDogV2Vi
Q29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxU
b2tlbml6ZXIuY3BwCShyZXZpc2lvbiAzNjY5NCkKKysrIFdlYkNvcmUvZG9tL1hNTFRva2VuaXpl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFR5
cGUuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNjQsOCArNjMs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVz
OwotCiBjb25zdCBpbnQgbWF4RXJyb3JzID0gMjU7CiAKIGJvb2wgaXNTY3JpcHRFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQpCkBAIC0zMTcsMTIgKzMxNCwxNSBAQAogICAgIAogICAgIFJlZlB0cjxF
bGVtZW50PiBlID0gbV9zY3JpcHRFbGVtZW50OwogICAgIG1fc2NyaXB0RWxlbWVudCA9IDA7Ci0g
ICAgCisKKyAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0gY2FzdFRvU2NyaXB0RWxl
bWVudChlLmdldCgpKTsKKyAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7CisKICAgICBpZiAoZXJy
b3JPY2N1cnJlZCkgCi0gICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoZS5nZXQoKSktPmRpc3Bh
dGNoRXZlbnRGb3JUeXBlKGVycm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgc2NyaXB0
RWxlbWVudC0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fdmll
dy0+ZnJhbWUoKS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoY2FjaGVkU2NyaXB0VXJsLCAxLCBz
Y3JpcHRTb3VyY2UpOwotICAgICAgICBFdmVudFRhcmdldE5vZGVDYXN0KGUuZ2V0KCkpLT5kaXNw
YXRjaEV2ZW50Rm9yVHlwZShsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHNjcmlw
dEVsZW1lbnQtPmRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgfQogICAgIAogICAgIG1fc2NyaXB0
RWxlbWVudCA9IDA7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzY2OTQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDA4LTA5LTE5ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYy4KKwor
ICAgICAgICBGaXhlczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzcyCisKKyAgICAgICAgRmluaXNoIEhUTUxTY3JpcHRFbGVtZW50IC8gU1ZHU2NyaXB0RWxlbWVu
dCB1bmlmaWNhdGlvbi4KKyAgICAgICAgU1ZHIDxzY3JpcHQ+IHN1cHBvcnQgaXMgY29tcGxldGUg
bm93LCBmdWxsIFNWR0xvYWQgZXZlbnQKKyAgICAgICAgcmVzcGVjdGluZyB0aGUgaW5mbHVlbmNl
IG9mIHRoZSBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIGF0dHJpYnV0ZQorICAgICAgICBhcyB3
ZWxsIGFzIFNWR0Vycm9yIGV2ZW50IHN1cHBvcnQuIEFsbCBvdGhlciBmZWF0dXJlcyBzaGFyZWQg
d2l0aCBIVE1MLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9z
Y3JpcHQtcmVleGVjdXRpb24uaHRtbAorICAgICAgICAgICAgICAgc3ZnL2RvbS9TVkdTY3JpcHRF
bGVtZW50L3NjcmlwdC1jaGFuZ2UtZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC13aGlsZS1sb2Fk
aW5nLnN2ZworICAgICAgICAgICAgICAgc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1s
b2FkLWFuZC1lcnJvci1ldmVudHMuc3ZnCisgICAgICAgICAgICAgICBzdmcvZG9tL1NWR1Njcmlw
dEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLnN2ZworICAgICAgICAgICAgICAgc3ZnL2RvbS9T
VkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi5zdmcKKworICAgICAgICAqIGRvbS9TY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjpTY3Jp
cHRFbGVtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6cmVx
dWVzdFNjcmlwdCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnREYXRhOjpoYXZlRmlyZWRMb2FkRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RWxlbWVudERhdGE6OnNldEhhdmVGaXJlZExvYWRFdmVudCk6CisgICAg
ICAgICogZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6
ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVu
dCk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU2NyaXB0RWxlbWVudDo6c2V0Q3JlYXRlZEJ5UGFyc2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU2NyaXB0RWxlbWVudDo6c2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRF
bGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
U2NyaXB0RWxlbWVudC5oOgorCiAyMDA4LTA5LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICAtIHRyeSB0byBmaXggUXQgYnVpbGQKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4
cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9z
dmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4cGVjdGVkLmNoZWNrc3Vt
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2Ny
aXB0RWxlbWVudC9zY3JpcHQtc2V0LWhyZWYtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK2Q5MGRjMDk3ZjUxOGI2Y2VlNzUxZjE1Mzg5MjBkY2QxClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtc2V0LWhyZWYtZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNl
dC1ocmVmLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
c3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1jaGFuZ2UtZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZC13aGlsZS1sb2FkaW5nLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWNo
YW5nZS1leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLXdoaWxlLWxvYWRpbmctZXhwZWN0ZWQuY2hl
Y2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2RvbS9T
VkdTY3JpcHRFbGVtZW50L3NjcmlwdC1jaGFuZ2UtZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC13
aGlsZS1sb2FkaW5nLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitmYzAwYjc4MmIzMWUzMTM5ZGJmMGIzMGYyZjE3OTAyYgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvc2NyaXB0LWNoYW5nZS1leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLXdoaWxlLWxvYWRp
bmctZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
ClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZG9tL1NW
R1NjcmlwdEVsZW1lbnQvc2NyaXB0LWNoYW5nZS1leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLXdo
aWxlLWxvYWRpbmctZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQog
ICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50
cy1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzIyNGI4YzU5YTcz
MGIwZTNiZDQyZDcwNDM2MDY4MjJmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
cmVleGVjdXRpb24tZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24t
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3RlZC5j
aGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorYjQ3YmViNDkwNzkxYjZiMzdlZDcw
NmZjNzNkNGI4MTcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWFuZC1l
cnJvci1ldmVudHMtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9z
dmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1leHBl
Y3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZH
U2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRpb24tZXhwZWN0ZWQucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhl
Y3V0aW9uLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjY5NCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDA4
LTA5LTE5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYy4KKworICAgICAgICBGaXhlczogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzcyCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0IGZhc3Qv
ZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi5odG1sLCB2ZXJpZnlpbmcg
dGhhdAorICAgICAgICBhcHBlbmRpbmcgYSA8c2NyaXB0PiwgcmVtb3ZpbmcgYW5kIHJlYXBwZW5k
aW5nIGRvZXNuJ3QgcmVleGVjdXRlIHRoZSBzY3JpcHQuCisKKyAgICAgICAgRml4IG9idmlvdXMg
ZXJyb3JzIGluIHRlc3RzIGNvbnRhaW5lZCBpbiBmYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC8u
CisgICAgICAgIFVzZSB0aGVzZSB0ZXN0cyBhcyBza2VsZXRvbiBmb3IgYSBzZXJpZXMgb2YgU1ZH
U2NyaXB0RWxlbWVudCB0ZXN0cy4KKyAgICAgICAgRXNwZWNpYWxseSB0ZXN0cyBTVkcncyBTVkdM
b2FkL1NWR0Vycm9yIGV2ZW50IHN1cHBvcnQsIGFzIHdlbGwgYXMgdGhlCisgICAgICAgIGluZmx1
ZW5jZSBvZiBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIGF0dHJpYnV0ZS4KKworICAgICAgICAq
IGZhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtcmVleGVjdXRpb24t
cGFzcy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2Ny
aXB0LWxvYWQtZXZlbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1l
bnQvc2NyaXB0LXJlZXhlY3V0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtc3JjLmh0bWw6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
Y2hhbmdlLWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQtd2hpbGUtbG9hZGluZy1leHBlY3RlZC5j
aGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9zY3JpcHQtY2hhbmdlLWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQtd2hpbGUtbG9h
ZGluZy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvZG9t
L1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1leHBlY3RlZC5j
aGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLWV4cGVjdGVkLnBuZzogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
cmVleGVjdXRpb24tZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLWV4cGVjdGVk
LnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9kb20vU1ZHU2NyaXB0RWxl
bWVudC9zY3JpcHQtc2V0LWhyZWYtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50OiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1s
b2FkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3Vy
Y2VzL3NjcmlwdC1sb2FkMi5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRF
bGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZDMuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQ0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1yZWV4ZWN1
dGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291
cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDFmYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9t
L1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMmZhaWwuanM6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0
LXNldC1ocmVmLXAzcGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRF
bGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDRwYXNzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
NWZhaWwuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNv
dXJjZXMvc2NyaXB0LXNldC1ocmVmLXA1cGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDZwYXNzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3Njcmlw
dC1zZXQtaHJlZi1wN3Bhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA4cGFzcy5qczogQWRkZWQuCisgICAg
ICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYt
cDlmYWlsQWZ0ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVu
dC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5ZmFpbEJlZm9yZS5qczogQWRkZWQuCisgICAg
ICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYt
cDlwYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2Ny
aXB0LWNoYW5nZS1leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLXdoaWxlLWxvYWRpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LWNoYW5nZS1leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLXdoaWxlLWxvYWRpbmcuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVy
cm9yLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2Ny
aXB0RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
cmVleGVjdXRpb24uc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR1NjcmlwdEVsZW1l
bnQvc2NyaXB0LXNldC1ocmVmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi5zdmc6IEFkZGVkLgorCiAyMDA4LTA5
LTE5ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZlIEh5YXR0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVs
ZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQt
cmVleGVjdXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHBhc3MoKSB7
CisgICAgdmFyIGNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdCk7
CisKKyAgICBpZiAoY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ1BBU1MnKSB7CisgICAg
ICAgIGNvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ID0gJ0ZBSUwnOworICAgIH0gZWxzZSBpZiAo
Y29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ0ZBSUwnKSB7CisgICAgICAgIGNvbnRlbnRF
bGVtZW50LnRleHRDb250ZW50ID0gJ1BBU1MnOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB0ZXN0ID0gInAxIjsKKyAgICB2YXIg
ZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBlMS50ZXh0Q29udGVu
dCA9IHBhc3MudG9TdHJpbmcoKSArICIgcGFzcygpOyI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChlMSk7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5yZW1vdmVDaGlsZChlMSk7CisKKyAgICB0ZXN0
ID0gInAyIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFw
cGVuZENoaWxkKGUxKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIp
WzBdLnJlbW92ZUNoaWxkKGUxKTsKKworICAgIHRlc3QgPSAicDMiOworICAgIGUzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgZTMuc3JjID0gInJlc291cmNlcy9zY3Jp
cHQtcmVleGVjdXRpb24tcGFzcy5qcyI7CisgICAgZTMub25sb2FkID0gZnVuY3Rpb24oKSB7IGZp
bmlzaCgpOyB9OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0u
YXBwZW5kQ2hpbGQoZTMpOworfQorCitmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgdGVzdCA9ICJw
NCI7CisKKyAgICBlMy5vbmxvYWQgPSAiIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiaGVhZCIpWzBdLnJlbW92ZUNoaWxkKGUzKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGUzKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+Q3JlYXRlZCBzY3JpcHQgZWxlbWVudCwg
c2NyaXB0IGRhdGEgcGFzc2VkIGFzIHRleHQgY29udGVudCwgYXBwZW5kZWQ6IDxzcGFuIGlkPSJw
MSI+RkFJTDwvc3Bhbj48L3A+Cis8cD5SZW1vdmVkIGVsZW1lbnQsIHJlYWRkIGVsZW1lbnQsIHJl
bW92ZSBhZ2Fpbiwgc2NyaXB0IHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVkOjxzcGFuIGlkPSJwMiI+
UEFTUzwvc3Bhbj48L3A+Cis8cD5DcmVhdGVkIHNjcmlwdCBlbGVtZW50LCBsb2FkaW5nIGV4dGVy
bmFsIHNjcmlwdCBjb250ZW50LCBhcHBlbmRlZDogPHNwYW4gaWQ9InAzIj5GQUlMPC9zcGFuPjwv
cD4KKzxwPlJlbW92ZWQgZWxlbWVudCwgcmVhZGQgZWxlbWVudCwgc2NyaXB0IHNob3VsZG4ndCBo
YXZlIGV4ZWN1dGVkOiA8c3BhbiBpZD0icDQiPlBBU1M8L3NwYW4+PC9wPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0
LXNldC1zcmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2Ny
aXB0RWxlbWVudC9zY3JpcHQtc2V0LXNyYy5odG1sCShyZXZpc2lvbiAzNjY5NCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtc3JjLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAKICAgICB2YXIgZTMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCAic2NyaXB0IiApOwogICAgIGUzLnR5cGUgID0gInRleHQvamF2YXNj
cmlwdCI7Ci0gICAgZTMuc3JjID0gInJlc291cmNlcy9zY3JpcHQtc2V0LXNyYy1wOGZhaWxCZWZv
cmUuanMiOworICAgIGUzLnNyYyA9ICJyZXNvdXJjZXMvc2NyaXB0LXNldC1zcmMtcDlmYWlsQmVm
b3JlLmpzIjsKICAgICBlMy5zcmMgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQtc3JjLXA5cGFzcy5q
cyI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRD
aGlsZChlMyk7CiAgICAgZTMuc3JjID0gInJlc291cmNlcy9zY3JpcHQtc2V0LXNyYy1wOWZhaWxB
ZnRlci5qcyI7CkBAIC00Myw3ICs0Myw3IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgaWQ9InMyIiBzcmM9InJlc291cmNlcy90aGlzU2hvdWxkTm90RXhpc3QubnVsbCI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InM1IiBzcmM9InJlc291cmNl
cy9zY3JpcHQtc2V0LXNyYy1wNXBhc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGlkPSJzMyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgaWQ9InM0Ij48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBp
ZD0iczQiLz4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0iczYiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2Fk
LWV2ZW50cy5odG1sCShyZXZpc2lvbiAzNjY5NCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTY3JpcHRFbGVtZW50L3NjcmlwdC1sb2FkLWV2ZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw3ICs2Myw3IEBACiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJs
b2FkZWQoMCkiIG9uZXJyb3I9ImVycmVkKDApIiBzcmM9InJlc291cmNlcy9jZXJ0YWlubHlkb2Vz
bm90ZXhpc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9u
bG9hZD0ibG9hZGVkKDEpIiBvbmVycm9yPSJlcnJlZCgxKSIgc3JjPSJyZXNvdXJjZXMvY2VydGFp
bmx5ZG9lc25vdGV4aXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBvbmxvYWQ9ImxvYWRlZCgyKSIgb25lcnJvcj0iZXJyZWQoMikiIHNyYz0icmVzb3VyY2Vz
L3NjcmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBvbmxvYWQ9ImxvYWRlZCgzKSIgb25lcnJvcj0iZXJyZWQoMykiIHNyYz0icmVzb3VyY2VzL3Nj
cmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBv
bmxvYWQ9ImxvYWRlZCgzKSIgb25lcnJvcj0iZXJyZWQoMykiIHNyYz0icmVzb3VyY2VzL3Njcmlw
dC1sb2FkLmpzIi8+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgZG9jdW1l
bnQud3JpdGUoJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmxvYWQ9ImxvYWRlZCg0
KSIgb25lcnJvcj0iZXJyZWQoNCkiIHNyYz0icmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48L3Nj
cmlwdCcrJz4nKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFNj
cmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9zY3JpcHQtcmVleGVjdXRp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFNjcmlwdEVsZW1lbnQvc2NyaXB0LXJlZXhlY3V0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3IEBACitDcmVhdGVkIHNjcmlwdCBlbGVtZW50LCBzY3JpcHQgZGF0YSBw
YXNzZWQgYXMgdGV4dCBjb250ZW50LCBhcHBlbmRlZDogUEFTUworCitSZW1vdmVkIGVsZW1lbnQs
IHJlYWRkIGVsZW1lbnQsIHJlbW92ZSBhZ2Fpbiwgc2NyaXB0IHNob3VsZG4ndCBoYXZlIGV4ZWN1
dGVkOlBBU1MKKworQ3JlYXRlZCBzY3JpcHQgZWxlbWVudCwgbG9hZGluZyBleHRlcm5hbCBzY3Jp
cHQgY29udGVudCwgYXBwZW5kZWQ6IFBBU1MKKworUmVtb3ZlZCBlbGVtZW50LCByZWFkZCBlbGVt
ZW50LCBzY3JpcHQgc2hvdWxkbid0IGhhdmUgZXhlY3V0ZWQ6IFBBU1MKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtcmVleGVjdXRp
b24tcGFzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0
RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXJlZXhlY3V0aW9uLXBhc3MuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2Ny
aXB0LXJlZXhlY3V0aW9uLXBhc3MuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRlc3QpLnRleHRDb250ZW50ID0gIlBBU1MiOwpJbmRleDogTGF5
b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1jaGFuZ2UtZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZC13aGlsZS1sb2FkaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWNoYW5nZS1leHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLXdoaWxlLWxvYWRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1jaGFu
Z2UtZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC13aGlsZS1sb2FkaW5nLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUZXN0IGNoYW5naW5nIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgYWZ0ZXIgaW5zZXJ0aW5nIHRoZSBlbGVtZW50IGludG8gdGhlIHRyZWUuCitU
ZXN0IDE6IFBBU1MKKworVGVzdCAyOiBQQVNTCisKK1Rlc3QgMzogUEFTUworCitUZXN0IDQ6IFBB
U1MKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtY2hh
bmdlLWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQtd2hpbGUtbG9hZGluZy5zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1jaGFuZ2Ut
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC13aGlsZS1sb2FkaW5nLnN2ZwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtY2hhbmdlLWV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQtd2hpbGUtbG9hZGluZy5zdmcJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTA0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxzdmcgd2lkdGg9IjEwMCUi
IGhlaWdodD0iMTAwJSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4
bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6eGh0bWw9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiIG9ubG9hZD0ic3RhcnRUZXN0KCkiPgorPGRlZnM+Cis8c2Ny
aXB0PgordmFyIHJlc291cmNlTG9hZGVkID0gZmFsc2U7CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCisvLyBUaGUgU1ZH
TG9hZCBldmVudCBzaG91bGQgYmUgZmlyZWQgcmlnaHQgYWZ0ZXIgYXBwZW5kaW5nIHRoZSBzY3Jp
cHQgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQsIGJlZm9yZSB0aGUgdGFyZ2V0IHJlc291cmNlIGlz
IGxvYWRlZAorZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIHZhciBzY3JpcHRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJz
dmc6c2NyaXB0Iik7CisgICAgc2NyaXB0RWxlbWVudC5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2Vz
L3NjcmlwdC1sb2FkLmpzIjsKKyAgICBzY3JpcHRFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBpZiAocmVzb3VyY2VMb2FkZWQpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdDEiKS5pbm5lckhUTUwgPSAiRkFJTDogb25sb2FkIGZpcmVkIHRvbyBs
YXRlLiBFeHRlcm5hbCByZXNvdXJjZSBhbHJlYWR5IGNvbXBsZXRlZCBsb2FkaW5nIjsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKS5p
bm5lckhUTUwgPSAiUEFTUyI7CisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgnY29udGlu
dWVUZXN0MSgpJywgMCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImRlZnMiKVswXS5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsKK30K
KworLy8gVGhlIFNWR0xvYWQgZXZlbnQgc2hvdWxkIGJlIGZpcmVkIHJpZ2h0IGFmdGVyIGFwcGVu
ZGluZyB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LCBiZWZvcmUgdGhlIHRhcmdl
dCByZXNvdXJjZSBpcyBsb2FkZWQKKy8vIENoYW5naW5nIHRoZSAnZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCcgcHJvcGVydHkgYWZ0ZXIgYXBwZW5kaW5nIHRoZSBzY3JpcHQgZWxlbWVudCwgc2hv
dWxkbid0IGFmZmVjdCB0aGUgU1ZHTG9hZCBldmVudCBkaXNwYXRjaGluZy4KK2Z1bmN0aW9uIGNv
bnRpbnVlVGVzdDEoKSB7CisgICAgcmVzb3VyY2VMb2FkZWQgPSBmYWxzZTsKKworICAgIHZhciBz
Y3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJzdmc6c2NyaXB0Iik7CisgICAgc2NyaXB0RWxlbWVudC5ocmVmLmJhc2VW
YWwgPSAicmVzb3VyY2VzL3NjcmlwdC1sb2FkMi5qcyI7CisgICAgICAgIHNjcmlwdEVsZW1lbnQu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisKKyAgICAgICAgaWYgKHJlc291cmNlTG9hZGVkKQorICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIikuaW5uZXJIVE1MID0gIkZB
SUw6IG9ubG9hZCBmaXJlZCB0b28gbGF0ZS4gRXh0ZXJuYWwgcmVzb3VyY2UgYWxyZWFkeSBjb21w
bGV0ZWQgbG9hZGluZyI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3QyIikuaW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgICAgICAgd2lu
ZG93LnNldFRpbWVvdXQoJ2NvbnRpbnVlVGVzdDIoKScsIDApOworICAgICAgICB9CisgICAgfTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hp
bGQoc2NyaXB0RWxlbWVudCk7CisgICAgc2NyaXB0RWxlbWVudC5leHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmJhc2VWYWwgPSB0cnVlOworfQorCisvLyBUaGUgU1ZHTG9hZCBldmVudCBzaG91bGQg
YmUgZGlzcGF0Y2hlZCwgYWZlciB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UgaGFzIGZpbmlzaGVkIGxv
YWRpbmcKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKSB7CisgICAgcmVzb3VyY2VMb2FkZWQgPSBm
YWxzZTsKKworICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdmc6c2NyaXB0Iik7CisgICAgc2NyaXB0
RWxlbWVudC5leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmJhc2VWYWwgPSB0cnVlOworICAgIHNj
cmlwdEVsZW1lbnQuaHJlZi5iYXNlVmFsID0gInJlc291cmNlcy9zY3JpcHQtbG9hZDMuanMiOwor
ICAgIHNjcmlwdEVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICghcmVz
b3VyY2VMb2FkZWQpCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMi
KS5pbm5lckhUTUwgPSAiRkFJTDogb25sb2FkIGZpcmVkIHRvbyBlYXJseS4gRXh0ZXJuYWwgcmVz
b3VyY2Ugc3RpbGwgbG9hZGluZyI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QzIikuaW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoJ2NvbnRpbnVlVGVzdDMoKScsIDApOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBw
ZW5kQ2hpbGQoc2NyaXB0RWxlbWVudCk7Cit9CisKKy8vIFRoZSBTVkdMb2FkIGV2ZW50IHNob3Vs
ZCBiZSBkaXNwYXRjaGVkLCBhZmVyIHRoZSBleHRlcm5hbCByZXNvdXJjZSBoYXMgZmluaXNoZWQg
bG9hZGluZworLy8gQ2hhbmdpbmcgdGhlICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyBwcm9w
ZXJ0eSBmcm9tICd0cnVlJyB0byAnZmFsc2UnIGFmdGVyIGluc2VydGluZyB0aGUgc2NyaXB0IGVs
ZW1lbnQKKy8vIGluIHRoZSBkb2N1bWVudCwgc2hvdWxkIGNhdXNlIGFuIGltbWVkaWF0ZSBkaXNw
YXRjaCBvZiB0aGUgU1ZHTG9hZCBldmVudC4KK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDMoKSB7Cisg
ICAgcmVzb3VyY2VMb2FkZWQgPSBmYWxzZTsKKworICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdmc6
c2NyaXB0Iik7CisgICAgc2NyaXB0RWxlbWVudC5leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmJh
c2VWYWwgPSB0cnVlOworICAgIHNjcmlwdEVsZW1lbnQuaHJlZi5iYXNlVmFsID0gInJlc291cmNl
cy9zY3JpcHQtbG9hZDQuanMiOworICAgIHNjcmlwdEVsZW1lbnQub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlZCkKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0NCIpLmlubmVySFRNTCA9ICJGQUlMOiBvbmxvYWQgZmlyZWQgdG9v
IGxhdGUuIGVhcmx5LiBFeHRlcm5hbCByZXNvdXJjZSBzdGlsbCBsb2FkaW5nIjsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDQiKS5pbm5l
ckhUTUwgPSAiUEFTUyI7CisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgnZmluaXNoVGVz
dCgpJywgMCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImRlZnMiKVswXS5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsKKyAgICBzY3Jp
cHRFbGVtZW50LmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuYmFzZVZhbCA9IGZhbHNlOworfQor
CitmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwv
c2NyaXB0PgorPC9kZWZzPgorPGZvcmVpZ25PYmplY3Q+CitUZXN0IGNoYW5naW5nIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQgYWZ0ZXIgaW5zZXJ0aW5nIHRoZSBlbGVtZW50IGludG8gdGhlIHRy
ZWUuCis8eGh0bWw6aHIvPgorPHhodG1sOnA+VGVzdCAxOiA8eGh0bWw6c3BhbiBpZD0idGVzdDEi
PkRJRCBOT1QgRVhFQ1VURTwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8eGh0bWw6cD5UZXN0IDI6
IDx4aHRtbDpzcGFuIGlkPSJ0ZXN0MiI+RElEIE5PVCBFWEVDVVRFPC94aHRtbDpzcGFuPjwveGh0
bWw6cD4KKzx4aHRtbDpwPlRlc3QgMzogPHhodG1sOnNwYW4gaWQ9InRlc3QzIj5ESUQgTk9UIEVY
RUNVVEU8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPHhodG1sOnA+VGVzdCA0OiA8eGh0bWw6c3Bh
biBpZD0idGVzdDQiPkRJRCBOT1QgRVhFQ1VURTwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8L2Zv
cmVpZ25PYmplY3Q+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0
RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQt
YW5kLWVycm9yLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGVzdCBsb2FkIGFuZCBl
cnJvciBldmVudCBoYW5kbGluZyB3aXRoIFNWR1NjcmlwdEVsZW1lbnQKK1BBU1MKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3It
ZXZlbnRzLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy5zdmcJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9y
LWV2ZW50cy5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI0IEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiPz4KKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayIgeG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIG9uZXJyb3I9
ImVycm9yRXZlbnRIYW5kbGVyKGV2dCkiIG9ubG9hZD0idGVzdExvYWRFdmVudE5vdEZpcmVkKCki
PgorPGRlZnM+Cis8dGl0bGU+Jmx0O1NDUklQVCZndDsgbG9hZCBhbmQgZXJyb3IgZXZlbnRzPC90
aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3ZhciBzdGF0dXNfID0gbmV3
IEFycmF5KCk7Cit2YXIgc2hvdWxkQ29udGludWUgPSAxOwordmFyIGxhc3RUZXN0ID0gMDsKKwor
Zm9yIChpID0gMDsgaSAmbHQ7IDc7ICsraSkKKyAgICBzdGF0dXNfW2ldID0gIiI7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCitmdW5jdGlvbiB0ZXN0TG9hZEV2ZW50Tm90RmlyZWQoKSB7CisgICAgc2hvdWxkQ29udGlu
dWUgPSAwOworfQorCitmdW5jdGlvbiBsb2FkRXZlbnRIYW5kbGVyKGV2dCkgeworICAgIHN0YXR1
c19bZXZ0LnRhcmdldC5pZF0gKz0gIkwiOworfQorCitmdW5jdGlvbiBlcnJvckV2ZW50SGFuZGxl
cihldnQpIHsKKyAgICBzdGF0dXNfW2V2dC50YXJnZXQuaWRdICs9ICJFIjsKKworICAgIGlmIChs
YXN0VGVzdCkKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoJ2VuZFRlc3QoKScsIDApOworfQor
CitmdW5jdGlvbiBlbmRUZXN0KCkgeworICAgIHZhciBmYWlsdXJlcyA9ICIiOworCisgICAgaWYg
KHN0YXR1c19bMF0gIT0gIkxFIikKKyAgICAgICAgZmFpbHVyZXMgKz0gIjAgIjsKKyAgICBpZiAo
c3RhdHVzX1sxXSAhPSAiRSIpCisgICAgICAgIGZhaWx1cmVzICs9ICIxICI7CisgICAgaWYgKHN0
YXR1c19bMl0gIT0gIkwiKQorICAgICAgICBmYWlsdXJlcyArPSAiMiAiOworICAgIGlmIChzdGF0
dXNfWzNdICE9ICJMIikKKyAgICAgICAgZmFpbHVyZXMgKz0gIjMgIjsKKyAgICBpZiAoc3RhdHVz
X1s0XSAhPSAiTCIpCisgICAgICAgIGZhaWx1cmVzICs9ICI0ICI7CisgICAgaWYgKHN0YXR1c19b
NV0gIT0gIkxFIikKKyAgICAgICAgZmFpbHVyZXMgKz0gIjUgIjsKKyAgICBpZiAoc3RhdHVzX1s2
XSAhPSAiRSIpCisgICAgICAgIGZhaWx1cmVzICs9ICI2ICI7CisKKyAgICB2YXIgcmVzdWx0cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIik7CisgICAgaWYgKGZhaWx1cmVzKQor
ICAgICAgICByZXN1bHRzLmlubmVySFRNTCA9ICJGQUlMOiBUaGUgZm9sbG93aW5nIHRlc3RzIGZh
aWxlZDogIiArIGZhaWx1cmVzOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0cy5pbm5lckhUTUwg
PSAiUEFTUyI7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxhc3RU
ZXN0QmVmb3JlUm9vdEVsZW1lbnRMb2FkZWQoKSB7CisgICAgLy8gQXNzdXJlIHRoZSBTVkdTVkdF
bGVtZW50IG9ubG9hZCBoYW5kbGVyIGRvZXNuJ3QgZmlyZSwgYmVjYXVzZSBvbmUgc2NyaXB0IGVs
ZW1lbnQgcG9pbnRzIHRvIGEgbm90LWV4aXN0YW50CisgICAgLy8gcmVzb3VyY2UsIGFuZCBzcGVj
aWZpZXMgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD10cnVlLiBUaGlzIHByZXZlbnRzIFNWR0xv
YWQgZnJvbSBiZWluZyBkaXNwYXRjaGVkLgorICAgIHdpbmRvdy5zZXRUaW1lb3V0KCdzdGFydER5
bmFtaWNUZXN0cygpJywgMCk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0RHluYW1pY1Rlc3RzKCkgewor
ICAgIGlmIChzaG91bGRDb250aW51ZSkgeworICAgICAgICB2YXIgc2NyaXB0RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3Zn
OnNjcmlwdCIpOworICAgICAgICBzY3JpcHRFbGVtZW50LmlkID0gNDsKKyAgICAgICAgc2NyaXB0
RWxlbWVudC50eXBlLmJhc2VWYWwgPSAidGV4dC9qYXZhc2NyaXB0IjsKKyAgICAgICAgc2NyaXB0
RWxlbWVudC5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIjsKKworICAg
ICAgICBzY3JpcHRFbGVtZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKGxvYWRFdmVudCkgeworICAgICAg
ICAgICAgbG9hZEV2ZW50SGFuZGxlcihsb2FkRXZlbnQpOworICAgICAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoJ2NvbnRpbnVlRHluYW1pY1Rlc3QxKCknLCAwKTsKKyAgICAgICAgfTsKKworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGVmcyIpWzBdLmFwcGVuZENoaWxk
KHNjcmlwdEVsZW1lbnQpOyAKKyAgICB9IGVsc2UgeyAKKyAgICAgICAgdmFyIHJlc3VsdHMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpOworICAgICAgICByZXN1bHRzLmlubmVy
SFRNTCA9ICJGQUlMOiBTVkdMb2FkIGV2ZW50IG9uIHJvb3QgZWxlbWVudCBzaG91bGRuJ3QgZmly
ZS4iOworCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjb250aW51ZUR5bmFtaWNUZXN0MSgpIHsKKyAgICB2YXIgc2NyaXB0RWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3Zn
OnNjcmlwdCIpOworICAgIHNjcmlwdEVsZW1lbnQuaWQgPSA1OworICAgIHNjcmlwdEVsZW1lbnQu
dHlwZS5iYXNlVmFsID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgc2NyaXB0RWxlbWVudC5ocmVm
LmJhc2VWYWwgPSAicmVzb3VyY2VzL25vdC1leGlzdGFudC5qcyI7CisKKyAgICBzY3JpcHRFbGVt
ZW50Lm9ubG9hZCA9IGZ1bmN0aW9uKGxvYWRFdmVudCkgeworICAgICAgICBsb2FkRXZlbnRIYW5k
bGVyKGxvYWRFdmVudCk7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCdjb250aW51ZUR5bmFt
aWNUZXN0MigpJywgMCk7CisgICAgfTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxlbWVudCk7ICAKK30KKworZnVuY3Rp
b24gY29udGludWVEeW5hbWljVGVzdDIoKSB7CisgICAgdmFyIHNjcmlwdEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2Zzpz
Y3JpcHQiKTsKKyAgICBzY3JpcHRFbGVtZW50LmlkID0gNjsKKyAgICBzY3JpcHRFbGVtZW50LnR5
cGUuYmFzZVZhbCA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgIHNjcmlwdEVsZW1lbnQuaHJlZi5i
YXNlVmFsID0gInJlc291cmNlcy9ub3QtZXhpc3RhbnQuanMiOworICAgIHNjcmlwdEVsZW1lbnQu
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5iYXNlVmFsID0gdHJ1ZTsKKworICAgIGxhc3RUZXN0
ID0gMTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGVmcyIpWzBdLmFwcGVu
ZENoaWxkKHNjcmlwdEVsZW1lbnQpOyAgCit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjAiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5r
OmhyZWY9InJlc291cmNlcy9jZXJ0YWlubHlkb2Vzbm90ZXhpc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBpZD0iMSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkPSJ0cnVlIiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIgeGxpbms6aHJlZj0icmVz
b3VyY2VzL2NlcnRhaW5seWRvZXNub3RleGlzdHRvby5qcyIvPgorPHNjcmlwdCBpZD0iMiIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIgeGxpbms6
aHJlZj0icmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjMi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD0idHJ1ZSIg
b25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCk7IGxhc3RUZXN0QmVmb3JlUm9vdEVsZW1lbnRM
b2FkZWQoKTsiIHhsaW5rOmhyZWY9InJlc291cmNlcy9zY3JpcHQtbG9hZC5qcyIvPgorPC9kZWZz
PgorPGZvcmVpZ25PYmplY3Q+CitUZXN0IGxvYWQgYW5kIGVycm9yIGV2ZW50IGhhbmRsaW5nIHdp
dGggU1ZHU2NyaXB0RWxlbWVudAorPHhodG1sOmhyLz4KKzx4aHRtbDpwIGlkPSJyZXN1bHRzIj5G
QUlMOiBUZXN0IG5ldmVyIGZpbmlzaGVkLjwveGh0bWw6cD4KKzwvZm9yZWlnbk9iamVjdD4KKzwv
c3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1y
ZWV4ZWN1dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXJl
ZXhlY3V0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitDcmVh
dGVkIHNjcmlwdCBlbGVtZW50LCBzY3JpcHQgZGF0YSBwYXNzZWQgYXMgdGV4dCBjb250ZW50LCBh
cHBlbmRlZDogUEFTUworCitSZW1vdmVkIGVsZW1lbnQsIHJlYWRkIGVsZW1lbnQsIHJlbW92ZSBh
Z2Fpbiwgc2NyaXB0IHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVkOlBBU1MKKworQ3JlYXRlZCBzY3Jp
cHQgZWxlbWVudCwgbG9hZGluZyBleHRlcm5hbCBzY3JpcHQgY29udGVudCwgYXBwZW5kZWQ6IFBB
U1MKKworUmVtb3ZlZCBlbGVtZW50LCByZWFkZCBlbGVtZW50LCBzY3JpcHQgc2hvdWxkbid0IGhh
dmUgZXhlY3V0ZWQ6IFBBU1MKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxl
bWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQzLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNl
cy9zY3JpcHQtbG9hZDMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK3Jlc291cmNlTG9h
ZGVkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9y
ZXNvdXJjZXMvc2NyaXB0LWxvYWQ0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQ0LmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3Jp
cHQtbG9hZDQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK3Jlc291cmNlTG9hZGVkID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJj
ZXMvc2NyaXB0LWxvYWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdT
Y3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LWxvYWQu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK3Jlc291cmNlTG9hZGVkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0
LXNldC1ocmVmLXA5ZmFpbEFmdGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5ZmFpbEFmdGVy
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50
L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDlmYWlsQWZ0ZXIuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwOSIpLmlubmVySFRNTCA9ICJG
QUlMIChhZnRlciBpbnNlcnRpb24pIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2Ny
aXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5ZmFpbEJlZm9yZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2Vz
L3NjcmlwdC1zZXQtaHJlZi1wOWZhaWxCZWZvcmUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
OWZhaWxCZWZvcmUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwOSIpLmlubmVySFRNTCA9ICJGQUlMIChiZWZvcmUgaW5zZXJ0aW9uKSI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3Njcmlw
dC1zZXQtaHJlZi1wM3Bhc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDNwYXNzLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNl
cy9zY3JpcHQtc2V0LWhyZWYtcDNwYXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicDMiKS5pbm5lckhUTUwgPSAiUEFTUyI7CkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQt
aHJlZi1wNHBhc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3Jp
cHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDRwYXNzLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3Jp
cHQtc2V0LWhyZWYtcDRwYXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicDQiKS5pbm5lckhUTUwgPSAiUEFTUyI7CkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
NXBhc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVt
ZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDVwYXNzLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtc2V0
LWhyZWYtcDVwYXNzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitwNXJlc3VsdCA9ICJQ
QVNTIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJj
ZXMvc2NyaXB0LXNldC1ocmVmLXAxZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMWZhaWwu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQv
cmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMWZhaWwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLmlubmVySFRNTCA9ICJGQUlMIjsK
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2Ny
aXB0LXNldC1ocmVmLXA2cGFzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9t
L1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNnBhc3MuanMJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3Vy
Y2VzL3NjcmlwdC1zZXQtaHJlZi1wNnBhc3MuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNiIpLmlubmVySFRNTCA9ICJQQVNTIjsKSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNl
dC1ocmVmLXAyZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Nj
cmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMmZhaWwuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3Nj
cmlwdC1zZXQtaHJlZi1wMmZhaWwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwMiIpLmlubmVySFRNTCA9ICJGQUlMIjsKSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVm
LXA3cGFzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wN3Bhc3MuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1z
ZXQtaHJlZi1wN3Bhc3MuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJwNyIpLmlubmVySFRNTCA9ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA4cGFz
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQv
cmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wOHBhc3MuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJl
Zi1wOHBhc3MuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwOCIpLmlubmVySFRNTCA9ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA5cGFzcy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3Vy
Y2VzL3NjcmlwdC1zZXQtaHJlZi1wOXBhc3MuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wOXBh
c3MuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwOSIpLmlubmVySFRNTCA9ICJQQVNTIjsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZH
U2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0LXJlZXhlY3V0aW9uLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9yZXNvdXJjZXMvc2NyaXB0
LXJlZXhlY3V0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdT
Y3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtcmVleGVjdXRpb24uanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3QpLnRleHRDb250ZW50
ID0gbWVzc2FnZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9y
ZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA1ZmFpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
NWZhaWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNWZhaWwuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEgQEAKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwNSIpLmlubmVySFRNTCA9ICJG
QUlMIChsb2FkZWQgd2hlbiBpdCBzaG91bGRuJ3QgaGF2ZSkiOwpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9zY3JpcHQtbG9hZDIuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Jlc291cmNlcy9z
Y3JpcHQtbG9hZDIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Nj
cmlwdEVsZW1lbnQvcmVzb3VyY2VzL3NjcmlwdC1sb2FkMi5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSBAQAorcmVzb3VyY2VMb2FkZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi5zdmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1yZWV4ZWN1dGlvbi5z
dmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQv
c2NyaXB0LXJlZXhlY3V0aW9uLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIj8+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsiIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
IiBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKzxkZWZzPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorZnVuY3Rpb24gcGFzcygpIHsKKyAgICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0KTsKKworICAgIGlmIChjb250ZW50RWxlbWVudC50ZXh0
Q29udGVudCA9PSAnUEFTUycpIHsKKyAgICAgICAgY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQg
PSAnRkFJTCc7CisgICAgfSBlbHNlIGlmIChjb250ZW50RWxlbWVudC50ZXh0Q29udGVudCA9PSAn
RkFJTCcpIHsKKyAgICAgICAgY29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSAnUEFTUyc7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgdGVzdCA9ICJwMSI7CisgICAgdmFyIGUxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdmc6c2NyaXB0Iik7CisgICAgZTEu
dGV4dENvbnRlbnQgPSBwYXNzLnRvU3RyaW5nKCkgKyAiIHBhc3MoKTsiOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoZTEpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0ucmVtb3ZlQ2hpbGQoZTEpOwor
CisgICAgdGVzdCA9ICJwMiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRl
ZnMiKVswXS5hcHBlbmRDaGlsZChlMSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImRlZnMiKVswXS5yZW1vdmVDaGlsZChlMSk7CisKKyAgICB0ZXN0ID0gInAzIjsKKyAgICBt
ZXNzYWdlID0gIlBBU1MiOworCisgICAgZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZzpzY3JpcHQiKTsKKyAgICBlMy5leHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLmJhc2VWYWwgPSB0cnVlOyAvLyBPdGhlcndoaXNlIFNWR0xvYWQg
ZXZlbnQgd2lsbCBiZSBmaXJlZCBpbW1lZGlhdGVseS4KKyAgICBlMy5ocmVmLmJhc2VWYWwgPSAi
cmVzb3VyY2VzL3NjcmlwdC1yZWV4ZWN1dGlvbi5qcyI7CisgICAgZTMub25sb2FkID0gZnVuY3Rp
b24oKSB7IGZpbmlzaCgpOyB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRl
ZnMiKVswXS5hcHBlbmRDaGlsZChlMyk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICB0
ZXN0ID0gInA0IjsKKyAgICBtZXNzYWdlID0gIkZBSUwiOworCisgICAgZTMub25sb2FkID0gIiI7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRlZnMiKVswXS5yZW1vdmVDaGls
ZChlMyk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRlZnMiKVswXS5hcHBl
bmRDaGlsZChlMyk7Cit9Cis8L3NjcmlwdD4KKzwvZGVmcz4KKzxmb3JlaWduT2JqZWN0PgorPHho
dG1sOnA+Q3JlYXRlZCBzY3JpcHQgZWxlbWVudCwgc2NyaXB0IGRhdGEgcGFzc2VkIGFzIHRleHQg
Y29udGVudCwgYXBwZW5kZWQ6IDx4aHRtbDpzcGFuIGlkPSJwMSI+RkFJTDwveGh0bWw6c3Bhbj48
L3hodG1sOnA+Cis8eGh0bWw6cD5SZW1vdmVkIGVsZW1lbnQsIHJlYWRkIGVsZW1lbnQsIHJlbW92
ZSBhZ2Fpbiwgc2NyaXB0IHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVkOjx4aHRtbDpzcGFuIGlkPSJw
MiI+UEFTUzwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8eGh0bWw6cD5DcmVhdGVkIHNjcmlwdCBl
bGVtZW50LCBsb2FkaW5nIGV4dGVybmFsIHNjcmlwdCBjb250ZW50LCBhcHBlbmRlZDogPHhodG1s
OnNwYW4gaWQ9InAzIj5GQUlMPC94aHRtbDpzcGFuPjwveGh0bWw6cD4KKzx4aHRtbDpwPlJlbW92
ZWQgZWxlbWVudCwgcmVhZGQgZWxlbWVudCwgc2NyaXB0IHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVk
OiA8eGh0bWw6c3BhbiBpZD0icDQiPlBBU1M8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPC9mb3Jl
aWduT2JqZWN0PgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LXNldC1ocmVmLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9z
Y3JpcHQtc2V0LWhyZWYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBA
CitQYXJzZXItY3JlYXRlZCBzY3JpcHQgZWxlbWVudHM6CisKK0FscmVhZHkgY29udGFpbmluZyB0
ZXh0OiBQQVNTCisKK0FscmVhZHkgc3BlY2lmeWluZyBtaXNzaW5nIHNvdXJjZTogUEFTUworCitB
bHJlYWR5IHNwZWNpZnlpbmcgdmFsaWQgc291cmNlOiBQQVNTCisKK05vIHRleHQgYW5kIG5vIHNv
dXJjZTogUEFTUworCitTZWxmLWNsb3NpbmcgPHNjcmlwdD4gdGFnOiBQQVNTCisKK1VzaW5nIHNl
dEF0dHJpYnV0ZTogUEFTUworCitEeW5hbWljYWxseS1pbnNlcnRlZCBzY3JpcHQgZWxlbWVudHM6
CisKK1NldCBiZWZvcmUgaW5zZXJ0aW9uOiBQQVNTCisKK1NldCBhZnRlciBpbnNlcnRpb246IFBB
U1MKKworU2V0IHR3aWNlIGJlZm9yZSBhbmQgb25jZSBhZnRlciBpbnNlcnRpb246IFBBU1MKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtc2V0LWhyZWYu
c3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9z
Y3JpcHQtc2V0LWhyZWYuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJlZi5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0
PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIgb25sb2FkPSJ0ZXN0KCkiPgorPGRlZnM+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Cit2YXIgcDVyZXN1bHQgPSAiRkFJTCI7CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInA1IikuaW5uZXJIVE1MID0gcDVyZXN1bHQ7CisgICAgCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInMxIikuaHJlZi5iYXNlVmFsID0gInJlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYt
cDFmYWlsLmpzIjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczIiKS5ocmVmLmJhc2VW
YWwgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wMmZhaWwuanMiOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzNSIpLmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvc2NyaXB0LXNl
dC1ocmVmLXA1ZmFpbC5qcyI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInMzIikuaHJl
Zi5iYXNlVmFsID0gInJlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDNwYXNzLmpzIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiczQiKS5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3Nj
cmlwdC1zZXQtaHJlZi1wNHBhc3MuanMiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
NiIpLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwgInhsaW5r
OmhyZWYiLCAicmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1wNnBhc3MuanMiKTsKKworICAgIHZh
ciBlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciLCAic3ZnOnNjcmlwdCIpOworICAgIGUxLnR5cGUuYmFzZVZhbCA9ICJ0ZXh0L2phdmFzY3Jp
cHQiOworICAgIGUxLmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvc2NyaXB0LXNldC1ocmVmLXA3
cGFzcy5qcyI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRlZnMiKVswXS5h
cHBlbmRDaGlsZChlMSk7CisgICAgCisgICAgdmFyIGUyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdmc6c2NyaXB0Iik7CisgICAgZTIu
dHlwZS5iYXNlVmFsID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImRlZnMiKVswXS5hcHBlbmRDaGlsZChlMik7CisgICAgZTIuaHJlZi5iYXNl
VmFsID0gInJlc291cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDhwYXNzLmpzIjsKKyAgICAKKyAgICB2
YXIgZTMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInN2ZzpzY3JpcHQiKTsKKyAgICBlMy50eXBlLmJhc2VWYWwgPSAidGV4dC9qYXZhc2Ny
aXB0IjsKKyAgICBlMy5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL3NjcmlwdC1zZXQtaHJlZi1w
OWZhaWxCZWZvcmUuanMiOworICAgIGUzLmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvc2NyaXB0
LXNldC1ocmVmLXA5cGFzcy5qcyI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImRlZnMiKVswXS5hcHBlbmRDaGlsZChlMyk7CisgICAgZTMuaHJlZi5iYXNlVmFsID0gInJlc291
cmNlcy9zY3JpcHQtc2V0LWhyZWYtcDlmYWlsQWZ0ZXIuanMiOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgaWQ9InMxIj4KKy8vIFBhcnNlci1jcmVhdGVkLiBI
YXMgdGV4dCBzbyBpdCBzaG91bGQgbm90IGxvYWQgdXBvbiBzZXR0aW5nIGhyZWYuCis8L3Njcmlw
dD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0iczIiIHhsaW5rOmhyZWY9InJl
c291cmNlcy90aGlzU2hvdWxkTm90RXhpc3QubnVsbCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgaWQ9InM1IiB4bGluazpocmVmPSJyZXNvdXJjZXMvc2NyaXB0LXNl
dC1ocmVmLXA1cGFzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgaWQ9InMzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0i
czQiLz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBpZD0iczYiPjwvc2NyaXB0Pgor
PC9kZWZzPgorPGZvcmVpZ25PYmplY3Q+Cis8eGh0bWw6cD5QYXJzZXItY3JlYXRlZCBzY3JpcHQg
ZWxlbWVudHM6PC94aHRtbDpwPgorPHhodG1sOnA+QWxyZWFkeSBjb250YWluaW5nIHRleHQ6IDx4
aHRtbDpzcGFuIGlkPSJwMSI+UEFTUzwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8eGh0bWw6cD5B
bHJlYWR5IHNwZWNpZnlpbmcgbWlzc2luZyBzb3VyY2U6IDx4aHRtbDpzcGFuIGlkPSJwMiI+UEFT
UzwveGh0bWw6c3Bhbj48L3hodG1sOnA+Cis8eGh0bWw6cD5BbHJlYWR5IHNwZWNpZnlpbmcgdmFs
aWQgc291cmNlOiA8eGh0bWw6c3BhbiBpZD0icDUiPkZBSUw8L3hodG1sOnNwYW4+PC94aHRtbDpw
PgorPHhodG1sOnA+Tm8gdGV4dCBhbmQgbm8gc291cmNlOiA8eGh0bWw6c3BhbiBpZD0icDMiPkZB
SUw8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPHhodG1sOnA+U2VsZi1jbG9zaW5nICZsdDtzY3Jp
cHQmZ3Q7IHRhZzogPHhodG1sOnNwYW4gaWQ9InA0Ij5GQUlMPC94aHRtbDpzcGFuPjwveGh0bWw6
cD4KKzx4aHRtbDpwPlVzaW5nIHNldEF0dHJpYnV0ZTogPHhodG1sOnNwYW4gaWQ9InA2Ij5GQUlM
PC94aHRtbDpzcGFuPjwveGh0bWw6cD4KKzx4aHRtbDpoci8+Cis8eGh0bWw6cD5EeW5hbWljYWxs
eS1pbnNlcnRlZCBzY3JpcHQgZWxlbWVudHM6PC94aHRtbDpwPgorPHhodG1sOnA+U2V0IGJlZm9y
ZSBpbnNlcnRpb246IDx4aHRtbDpzcGFuIGlkPSJwNyI+RkFJTDwveGh0bWw6c3Bhbj48L3hodG1s
OnA+Cis8eGh0bWw6cD5TZXQgYWZ0ZXIgaW5zZXJ0aW9uOiA8eGh0bWw6c3BhbiBpZD0icDgiPkZB
SUw8L3hodG1sOnNwYW4+PC94aHRtbDpwPgorPHhodG1sOnA+U2V0IHR3aWNlIGJlZm9yZSBhbmQg
b25jZSBhZnRlciBpbnNlcnRpb246IDx4aHRtbDpzcGFuIGlkPSJwOSI+RkFJTDwveGh0bWw6c3Bh
bj48L3hodG1sOnA+Cis8L2ZvcmVpZ25PYmplY3Q+Cis8L3N2Zz4K
</data>
<flag name="review"
          id="10573"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>