<?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>189803</bug_id>
          
          <creation_ts>2018-09-20 14:28:18 -0700</creation_ts>
          <short_desc>Web Inspector: Table should support deleting rows</short_desc>
          <delta_ts>2018-10-27 16:30:13 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>190538</dependson>
          <blocked>66381</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1461540</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-09-20 14:28:18 -0700</bug_when>
    <thetext>Summary:
Table should support deleting rows. This can go through the table delegate with some new delegate methods:

TableDelegate
{
    tableShouldDeleteRow(table, rowIndex) =&gt; bool
    tableDidDeleteRow(table, rowIndex)
}

Implementing tableShouldDeleteRow will enable deleting table rows with the delete key, but since the table context menu is handled by the delegate it may take a separate path.

This is needed to use Table in CookieStorageContentView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461542</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-20 14:28:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/44655709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471653</commentid>
    <comment_count>2</comment_count>
      <attachid>352992</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-23 12:56:35 -0700</bug_when>
    <thetext>Created attachment 352992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471737</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-23 18:43:32 -0700</bug_when>
    <thetext>I missed a row removal use case. When right-clicking in a macOS tree or table that supports item removal (Finder, Mail, Xcode) brings up a context menu with a &quot;Delete&quot; menu item. When a selection exists in the tree/table, the target of the delete will be:

a) All the selected items, if the target item is selected
b) The target item only, if the target item is not selected

Supporting scenario b) requires an additional method, `Table.prototype.removeRow(rowIndex)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471984</commentid>
    <comment_count>4</comment_count>
      <attachid>353069</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-24 18:17:48 -0700</bug_when>
    <thetext>Created attachment 353069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472169</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-25 13:20:59 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #4)
&gt; Created attachment 353069 [details]
&gt; Patch

This can be tested by applying https://bugs.webkit.org/show_bug.cgi?id=66381.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472337</commentid>
    <comment_count>6</comment_count>
      <attachid>353069</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-25 22:32:04 -0700</bug_when>
    <thetext>Comment on attachment 353069
Patch

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

r=me, with some NITs

I&apos;d love to see a test (if you can) of what would happen when selection/deletion occurs outside of what&apos;s been cached (see Table.js:1432).

&gt; Source/WebInspectorUI/UserInterface/Base/IndexSet.js:99
&gt; +    clone()

NIT: I think we&apos;ve preferred `copy` in the past

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:388
&gt; +        if (rowIndex &gt;= this.numberOfRows)

While we&apos;re at it, should we also check that it&apos;s non-negative?  Maybe an assertion too?

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:406
&gt; +

Style: extra newline

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:1432
&gt; +            let newSelectedRow = this._cachedRows.get(rowIndex);

So this means that if we don&apos;t have a cached row for the index, we don&apos;t select it?  Is it possible for us to be in a situation where we don&apos;t have a cached row (e.g. it&apos;s far off the screen) and try to select it?  It seems like we should do some sort of &quot;generate rows if necessary&quot; here to make sure that we never &quot;lose&quot; a selection.

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:1442
&gt; +    _removeRows(rowIndexes)

NIT: just `indexes` would be clear enough IMO

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:1446
&gt; +        let adjustRowAtIndex = (rowIndex) =&gt; {

Ditto (1442)

&gt; LayoutTests/inspector/table/resources/table-utilities.js:27
&gt; +            for (let i = rowIndexes.length - 1; i &gt;= 0; --i)

NIT: I&apos;d call this `index` instead of `i` since it&apos;s a value, not &quot;just&quot; an index in an array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472742</commentid>
    <comment_count>7</comment_count>
      <attachid>353069</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-27 13:30:08 -0700</bug_when>
    <thetext>Comment on attachment 353069
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/IndexSet.js:99
&gt;&gt; +    clone()
&gt; 
&gt; NIT: I think we&apos;ve preferred `copy` in the past

Will change.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:388
&gt;&gt; +        if (rowIndex &gt;= this.numberOfRows)
&gt; 
&gt; While we&apos;re at it, should we also check that it&apos;s non-negative?  Maybe an assertion too?

I took another look at public Table methods taking a row index: deselectRow, selectRow, and removeRow. Only removeRow has any kind of validation. cellForRowAndColumn returns early if the row isn&apos;t visible, so an invalid index won&apos;t matter. I&apos;ll remove the check from removeRow, and add an assertion to all three:

console.assert(rowIndex &gt;= 0 &amp;&amp; rowIndex &lt; this.numberOfRows);

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:1432
&gt;&gt; +            let newSelectedRow = this._cachedRows.get(rowIndex);
&gt; 
&gt; So this means that if we don&apos;t have a cached row for the index, we don&apos;t select it?  Is it possible for us to be in a situation where we don&apos;t have a cached row (e.g. it&apos;s far off the screen) and try to select it?  It seems like we should do some sort of &quot;generate rows if necessary&quot; here to make sure that we never &quot;lose&quot; a selection.

It shouldn&apos;t be possible for us to to get in this situation currently, since a row needs to be visible (cached) to be interacted with/selected. Adding the index to `this._selectedRows` shouldn&apos;t be conditional though; good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472755</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-27 15:46:57 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #6)
&gt; Comment on attachment 353069 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353069&amp;action=review
&gt; 
&gt; r=me, with some NITs
&gt; 
&gt; I&apos;d love to see a test (if you can) of what would happen when
&gt; selection/deletion occurs outside of what&apos;s been cached (see Table.js:1432).

Good idea; I tested deselectRow, selectRow, and removeRow with an uncached row (row 999 of 1000). deselectRow fails but the others work as expected. I added a test to table-remove.rows.html, and will fix deselectRow (and add tests) in a follow-up:

Web Inspector: Table selection should not require that rows be in the cache
https://bugs.webkit.org/show_bug.cgi?id=190993</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472756</commentid>
    <comment_count>9</comment_count>
      <attachid>353248</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-27 15:52:06 -0700</bug_when>
    <thetext>Created attachment 353248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472759</commentid>
    <comment_count>10</comment_count>
      <attachid>353248</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-27 16:30:11 -0700</bug_when>
    <thetext>Comment on attachment 353248
Patch for landing

Clearing flags on attachment: 353248

Committed r237495: &lt;https://trac.webkit.org/changeset/237495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472760</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-27 16:30:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352992</attachid>
            <date>2018-10-23 12:56:35 -0700</date>
            <delta_ts>2018-10-24 18:17:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189803-20181023125632.patch</filename>
            <type>text/plain</type>
            <size>20822</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
MWU2ZTM1OWU4YWJhNjgzYTBiOWQzNzhiZTkzNTAxM2EwZjQyYTMzLi5lMWM0YzMyM2QyZWUzOGQw
M2Y2ZjMzMjk2OGIxNmI2MGU3ZmNlMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxOC0xMC0yMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUgc2hvdWxkIHN1cHBvcnQgZGVsZXRpbmcg
cm93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
ODAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDY1NTcwOT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbW92
ZSBzZWxlY3RlZCBUYWJsZSByb3dzLiBGb3Igbm93IGNsaWVudHMgYXJlIGxpbWl0ZWQKKyAgICAg
ICAgdG8gcmVtb3Zpbmcgc2VsZWN0ZWQgcm93cyBvbmx5LCB1c2luZyBhIG5ldyBtZXRob2QgVGFi
bGUucHJvdG90eXBlLnJlbW92ZVNlbGVjdGVkUm93cy4KKyAgICAgICAgVGFibGUgd2lsbCBzZWxl
Y3QgYSBuZXcgcm93IGJlZm9yZSByZW1vdmluZyB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvSW5kZXhTZXQuanM6CisgICAgICAgIChXSS5JbmRl
eFNldC5wcm90b3R5cGUuY2xvbmUpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9U
YWJsZS5qczoKKyAgICAgICAgKFdJLlRhYmxlKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlw
ZS5nZXQgbnVtYmVyT2ZSb3dzKToKKyAgICAgICAgQ2FjaGUgdGhlIG51bWJlciBvZiByb3dzIGlu
IHRoZSB0YWJsZSBkYXRhIHNvdXJjZS4gSW52YWxpZGF0ZSBjYWNoZWQKKyAgICAgICAgdmFsdWUg
d2hlbmV2ZXIgdGFibGUgZGF0YSBpcyByZWxvYWRlZC4gUmVtb3Zpbmcgcm93cyBpbW1lZGlhdGVs
eSB1cGRhdGVzCisgICAgICAgIGNhY2hlZCB2YWx1ZSwgd2l0aG91dCBpbmN1cnJpbmcgYSBwb3Rl
bnRpYWxseSBleHBlbnNpdmUgcmVsb2FkLgorCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUu
cmVsb2FkRGF0YSk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUucmVtb3ZlU2VsZWN0ZWRS
b3dzKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5fdXBkYXRlVmlzaWJsZVJvd3MpOgor
ICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duKToKKyAgICAgICAgKFdJ
LlRhYmxlLnByb3RvdHlwZS5fZGVzZWxlY3RBbGxBbmRTZWxlY3QpOgorICAgICAgICBEcml2ZS1i
eSBmaXg6IHNob3VsZCB3b3JrIHdoZW4gYHJvd1RvU2VsZWN0YCBpc24ndCBhbHJlYWR5IHNlbGVj
dGVkLgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl9yZW1vdmVSb3dzKToKKyAgICAgICAg
UmVtb3ZlIGEgbnVtYmVyIG9mIHJvd3MgYW5kIGFkanVzdCB0aGUgaW5kZXhlcyBvZiByb3dzIHRo
YXQgc2hpZnQgdXAKKyAgICAgICAgYXMgYSByZXN1bHQgb2YgcHJlY2VkaW5nIHJvd3MgYmVpbmcg
cmVtb3ZlZC4KKwogMjAxOC0xMC0yMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW5jYXVnaHQgRXhjZXB0aW9uOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnbW91c2VCbG9jay5hZGRFdmVudExpc3RlbmVyJykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvSW5kZXhTZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0luZGV4U2V0Lmpz
CmluZGV4IGY0OGNkNzEyODYyYmExODZkMmE5NmQ1NDFkYjFjNTRmYzFjNzJlYTQuLmIxYzE4NDcw
YmMxM2VlNzJlODJmYjFiOGNiNGI5MTUyNjA5ZTA0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvSW5kZXhTZXQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9JbmRleFNldC5qcwpAQCAtOTYsNiArOTYs
MTMgQEAgV0kuSW5kZXhTZXQgPSBjbGFzcyBJbmRleFNldAogICAgICAgICB0aGlzLl9pbmRleGVz
ID0gW107CiAgICAgfQogCisgICAgY2xvbmUoKQorICAgIHsKKyAgICAgICAgbGV0IGluZGV4U2V0
ID0gbmV3IFdJLkluZGV4U2V0OworICAgICAgICBpbmRleFNldC5faW5kZXhlcyA9IHRoaXMuX2lu
ZGV4ZXMuc2xpY2UoKTsKKyAgICAgICAgcmV0dXJuIGluZGV4U2V0OworICAgIH0KKwogICAgIGlu
ZGV4R3JlYXRlclRoYW4odmFsdWUpCiAgICAgewogICAgICAgICBjb25zdCBmb2xsb3dpbmcgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGFibGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJsZS5qcwppbmRleCA4MmIzYzMxNzExNThiMWI2YjQ2MGQxYjY1MGZiYTA1MmMwMzU2MTFkLi4z
NjE0MmI2MmNkODkwOTdlZjkwNGY4NDUzZDRjZGQ1NmY3YWE5N2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qcwpAQCAtNzYsNiAr
NzYsNyBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0
aGlzLl9yZXNpemVyc0VsZW1lbnQuY2xhc3NOYW1lID0gInJlc2l6ZXJzIjsKIAogICAgICAgICB0
aGlzLl9jYWNoZWRSb3dzID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fY2FjaGVkTnVtYmVyT2ZS
b3dzID0gTmFOOwogCiAgICAgICAgIHRoaXMuX2NvbHVtblNwZWNzID0gbmV3IE1hcDsKICAgICAg
ICAgdGhpcy5fY29sdW1uT3JkZXIgPSBbXTsKQEAgLTEzMiw2ICsxMzMsMTQgQEAgV0kuVGFibGUg
PSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKIAogICAgIGdldCBzY3JvbGxDb250YWluZXIo
KSB7IHJldHVybiB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50OyB9CiAKKyAgICBnZXQgbnVt
YmVyT2ZSb3dzKCkKKyAgICB7CisgICAgICAgIGlmIChpc05hTih0aGlzLl9jYWNoZWROdW1iZXJP
ZlJvd3MpKQorICAgICAgICAgICAgdGhpcy5fY2FjaGVkTnVtYmVyT2ZSb3dzID0gdGhpcy5fZGF0
YVNvdXJjZS50YWJsZU51bWJlck9mUm93cyh0aGlzKTsKKworICAgICAgICByZXR1cm4gdGhpcy5f
Y2FjaGVkTnVtYmVyT2ZSb3dzOworICAgIH0KKwogICAgIGdldCBzb3J0T3JkZXIoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRPcmRlcjsKQEAgLTI0MSw2ICsyNTAsNyBAQCBXSS5U
YWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9zZWxlY3Rl
ZFJvd0luZGV4ID0gTmFOOwogICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuY2xlYXIoKTsKIAor
ICAgICAgICB0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3MgPSBOYU47CiAgICAgICAgIHRoaXMuX3By
ZXZpb3VzUmV2ZWFsZWRSb3dDb3VudCA9IE5hTjsKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgp
OwogICAgIH0KQEAgLTM3Myw2ICszODMsNTEgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRl
bmRzIFdJLlZpZXcKICAgICAgICAgdGhpcy5fZGVzZWxlY3RBbGxBbmRTZWxlY3Qocm93SW5kZXgp
OwogICAgIH0KIAorICAgIHJlbW92ZVNlbGVjdGVkUm93cygpCisgICAgeworICAgICAgICBsZXQg
bnVtYmVyT2ZTZWxlY3RlZFJvd3MgPSB0aGlzLl9zZWxlY3RlZFJvd3Muc2l6ZTsKKyAgICAgICAg
aWYgKCFudW1iZXJPZlNlbGVjdGVkUm93cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBUcnkgc2VsZWN0aW5nIHRoZSByb3cgZm9sbG93aW5nIHRoZSBzZWxlY3Rpb24uCisgICAg
ICAgIGxldCBsYXN0U2VsZWN0ZWRSb3cgPSB0aGlzLl9zZWxlY3RlZFJvd3MubGFzdEluZGV4Owor
ICAgICAgICBsZXQgcm93VG9TZWxlY3QgPSBsYXN0U2VsZWN0ZWRSb3cgKyAxOworCisgICAgICAg
IGlmIChyb3dUb1NlbGVjdCA9PT0gdGhpcy5udW1iZXJPZlJvd3MpIHsKKyAgICAgICAgICAgIC8v
IElmIG5vIHJvdyBleGlzdHMgYWZ0ZXIgdGhlIGxhc3Qgc2VsZWN0ZWQgcm93LCB0cnkgc2VsZWN0
aW5nIGEKKyAgICAgICAgICAgIC8vIGRlc2VsZWN0ZWQgcm93IChob2xlKSB3aXRoaW4gdGhlIHNl
bGVjdGlvbi4KKyAgICAgICAgICAgIGxldCBmaXJzdFNlbGVjdGVkUm93ID0gdGhpcy5fc2VsZWN0
ZWRSb3dzLmZpcnN0SW5kZXg7CisgICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkUm93IC0gZmly
c3RTZWxlY3RlZFJvdyA+IG51bWJlck9mU2VsZWN0ZWRSb3dzKSB7CisgICAgICAgICAgICAgICAg
cm93VG9TZWxlY3QgPSB0aGlzLl9zZWxlY3RlZFJvd3MuZmlyc3RJbmRleCArIDE7CisgICAgICAg
ICAgICAgICAgd2hpbGUgKHRoaXMuX3NlbGVjdGVkUm93cy5oYXMocm93VG9TZWxlY3QpKQorICAg
ICAgICAgICAgICAgICAgICByb3dUb1NlbGVjdCsrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGNvbnRhaW5zIG5vIGhvbGVzLCB0cnkg
c2VsZWN0aW5nIHRoZSByb3cKKyAgICAgICAgICAgICAgICAvLyBwcmVjZWRpbmcgdGhlIHNlbGVj
dGlvbi4KKyAgICAgICAgICAgICAgICByb3dUb1NlbGVjdCA9IGZpcnN0U2VsZWN0ZWRSb3cgPiAw
ID8gZmlyc3RTZWxlY3RlZFJvdyAtIDEgOiBOYU47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICAvLyBDaGFuZ2UgdGhlIHNlbGVjdGlvbiBiZWZvcmUgcmVtb3Zpbmcgcm93cy4g
VGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvcgorICAgICAgICAvLyBvZiBtYWNPUyBGaW5kZXIgKGlu
IGxpc3QgYW5kIGNvbHVtbiBtb2Rlcykgd2hlbiByZW1vdmluZyBzZWxlY3RlZCBpdGVtcy4KKyAg
ICAgICAgbGV0IG9sZFNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93cy5jbG9uZSgpOwor
ICAgICAgICB0aGlzLl9kZXNlbGVjdEFsbEFuZFNlbGVjdChyb3dUb1NlbGVjdCk7CisgICAgICAg
IHRoaXMuX3JlbW92ZVJvd3Mob2xkU2VsZWN0ZWRSb3dzKTsKKworICAgICAgICBpZiAoaXNOYU4o
cm93VG9TZWxlY3QpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEFkanVzdCB0
aGUgaW5kZXggb2YgdGhlIG5ldyBzZWxlY3Rpb24gdG8gYWNjb3VudCBmb3IgcmVtb3ZlZCByb3dz
LgorICAgICAgICAvLyBJZiBUYWJsZSBldmVudHVhbGx5IGV4cG9zZXMgYSBnZW5lcmFsIHB1cnBv
c2UgYHJlbW92ZVJvd3NBdEluZGV4ZXNgCisgICAgICAgIC8vIG1ldGhvZCwgYWRqdXN0aW5nIHRo
ZSBpbmRleGVzIG9mIHNlbGVjdGVkIHJvd3Mgd2lsbCBuZWVkIHRvIG1vdmUgaW50bworICAgICAg
ICAvLyBgX3JlbW92ZVJvd3NgIGFuZCBiZSByZXdyaXR0ZW4gdG8gd29yayBmb3IgbXVsdGlwbGUg
c2VsZWN0ZWQgcm93cy4KKyAgICAgICAgaWYgKHJvd1RvU2VsZWN0ID4gbGFzdFNlbGVjdGVkUm93
KSB7CisgICAgICAgICAgICByb3dUb1NlbGVjdCAtPSBudW1iZXJPZlNlbGVjdGVkUm93czsKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93SW5kZXggPSByb3dUb1NlbGVjdDsKKyAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdGVkUm93cyA9IG5ldyBXSS5JbmRleFNldChbcm93VG9TZWxlY3RdKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIGNvbHVtbldpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uU3BlY3MuZ2V0KGlkZW50aWZpZXIp
OwpAQCAtNzkwLDcgKzg0NSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IHRoaXMuX2NhY2hlZFdpZHRoOwogICAg
ICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gdGhpcy5fY2FjaGVkSGVpZ2h0OwogCi0gICAgICAg
IGxldCBudW1iZXJPZlJvd3MgPSB0aGlzLl9kYXRhU291cmNlLnRhYmxlTnVtYmVyT2ZSb3dzKHRo
aXMpOworICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhpcy5udW1iZXJPZlJvd3M7CiAgICAg
ICAgIHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyA9IG51bWJlck9mUm93czsKIAogICAgICAgICBs
ZXQgY29udGVudEhlaWdodCA9IG51bWJlck9mUm93cyAqIHRoaXMuX3Jvd0hlaWdodDsKQEAgLTEw
MTEsNyArMTA2Niw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAg
ICAgICAgIGlmIChiZWxvd1RvcFRocmVzaG9sZCAmJiBhYm92ZUJvdHRvbVRocmVzaG9sZCAmJiAh
aXNOYU4odGhpcy5fcHJldmlvdXNSZXZlYWxlZFJvd0NvdW50KSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhpcy5fZGF0YVNvdXJjZS50YWJsZU51
bWJlck9mUm93cyh0aGlzKTsKKyAgICAgICAgbGV0IG51bWJlck9mUm93cyA9IHRoaXMubnVtYmVy
T2ZSb3dzCiAgICAgICAgIHRoaXMuX3ByZXZpb3VzUmV2ZWFsZWRSb3dDb3VudCA9IG51bWJlck9m
Um93czsKIAogICAgICAgICAvLyBTY3JvbGwgYmFjayB1cCBpZiB0aGUgbnVtYmVyIG9mIHJvd3Mg
d2FzIHJlZHVjZWQgc3VjaCB0aGF0IHRoZSBleGlzdGluZwpAQCAtMTIyMiw2ICsxMjc3LDcgQEAg
V0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKGV2ZW50
LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAg
IHJldHVybjsKIAorICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhpcy5udW1iZXJPZlJvd3M7
CiAgICAgICAgIGxldCByb3dUb1NlbGVjdCA9IE5hTjsKIAogICAgICAgICBpZiAoZXZlbnQua2V5
SWRlbnRpZmllciA9PT0gIlVwIikgewpAQCAtMTM2Niw4ICsxNDIyLDYgQEAgV0kuVGFibGUgPSBj
bGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBmb3IgKGxldCBzZWxlY3RlZFJvd0luZGV4IG9mIHRoaXMuX3NlbGVjdGVkUm93cykgewotICAg
ICAgICAgICAgaWYgKHNlbGVjdGVkUm93SW5kZXggPT09IHJvd0luZGV4KQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbGV0IG9sZFNlbGVjdGVkUm93ID0gdGhpcy5fY2Fj
aGVkUm93cy5nZXQoc2VsZWN0ZWRSb3dJbmRleCk7CiAgICAgICAgICAgICBpZiAob2xkU2VsZWN0
ZWRSb3cpCiAgICAgICAgICAgICAgICAgb2xkU2VsZWN0ZWRSb3cuY2xhc3NMaXN0LnJlbW92ZSgi
c2VsZWN0ZWQiKTsKQEAgLTEzNzYsMTIgKzE0MzAsNTQgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJs
ZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dJbmRleCA9IHJvd0lu
ZGV4OwogICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuY2xlYXIoKTsKIAotICAgICAgICBpZiAo
IWlzTmFOKHJvd0luZGV4KSkKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5hZGQocm93
SW5kZXgpOworICAgICAgICBpZiAoIWlzTmFOKHJvd0luZGV4KSkgeworICAgICAgICAgICAgbGV0
IG5ld1NlbGVjdGVkUm93ID0gdGhpcy5fY2FjaGVkUm93cy5nZXQocm93SW5kZXgpOworICAgICAg
ICAgICAgaWYgKG5ld1NlbGVjdGVkUm93KSB7CisgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRS
b3cuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxl
Y3RlZFJvd3MuYWRkKHJvd0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuX25vdGlmeVNlbGVjdGlvbkRpZENoYW5nZSgpOwogICAgIH0KIAorICAgIF9yZW1v
dmVSb3dzKHJvd0luZGV4ZXMpCisgICAgeworICAgICAgICBsZXQgcmVtb3ZlZCA9IDA7CisKKyAg
ICAgICAgbGV0IGFkanVzdFJvd0luZGV4ID0gKHJvdykgPT4geworICAgICAgICAgICAgdGhpcy5f
Y2FjaGVkUm93cy5kZWxldGUocm93Ll9faW5kZXgpOworICAgICAgICAgICAgcm93Ll9faW5kZXgg
LT0gcmVtb3ZlZDsKKyAgICAgICAgICAgIHRoaXMuX2NhY2hlZFJvd3Muc2V0KHJvdy5fX2luZGV4
LCByb3cpOworICAgICAgICB9OworCisgICAgICAgIGZvciAobGV0IGkgPSByb3dJbmRleGVzLmZp
cnN0SW5kZXg7IGkgPD0gcm93SW5kZXhlcy5sYXN0SW5kZXg7ICsraSkgeworICAgICAgICAgICAg
bGV0IGNhY2hlZFJvdyA9IHRoaXMuX2NhY2hlZFJvd3MuZ2V0KGkpOworICAgICAgICAgICAgaWYg
KHJvd0luZGV4ZXMuaGFzKGkpKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlZCsrOworICAgICAg
ICAgICAgICAgIGlmIChjYWNoZWRSb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkUm93
LnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRSb3dzLmRlbGV0ZShp
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhY2hlZFJvdykK
KyAgICAgICAgICAgICAgICBhZGp1c3RSb3dJbmRleChjYWNoZWRSb3cpOworICAgICAgICB9CisK
KyAgICAgICAgZm9yIChsZXQgaSA9IHJvd0luZGV4ZXMubGFzdEluZGV4ICsgMTsgaSA8IHRoaXMu
X2NhY2hlZE51bWJlck9mUm93czsgKytpKSB7CisgICAgICAgICAgICBsZXQgY2FjaGVkUm93ID0g
dGhpcy5fY2FjaGVkUm93cy5nZXQoaSk7CisgICAgICAgICAgICBpZiAoY2FjaGVkUm93KQorICAg
ICAgICAgICAgICAgIGFkanVzdFJvd0luZGV4KGNhY2hlZFJvdyk7CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3MgLT0gcmVtb3ZlZDsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fY2FjaGVkTnVtYmVyT2ZSb3dzID49IDApOworCisgICAgICAgIGlmICh0
aGlzLl9kZWxlZ2F0ZS50YWJsZURpZFJlbW92ZVJvd3MpIHsKKyAgICAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlLnRhYmxlRGlkUmVtb3ZlUm93cyh0aGlzLCBBcnJheS5mcm9tKHJvd0luZGV4ZXMpKTsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyA9PT0g
dGhpcy5fZGF0YVNvdXJjZS50YWJsZU51bWJlck9mUm93cyh0aGlzKSwgIlRhYmxlIGRhdGEgc291
cmNlIHNob3VsZCB1cGRhdGUgYWZ0ZXIgcmVtb3Zpbmcgcm93cy4iKTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIF9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3NlbGVjdGVkUm93cy5oYXMocm93SW5kZXgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNmZDg3Y2E1Y2MxYWM0
ZDRlZDRlMGFiMjdhNTVmZDk5Nzc3Y2QyYzcuLjQ2YjEyNzU3MWFlM2U5MjFmNzg2ZDM1MWIyNTQz
YzQ3ZGE4NzEwYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxOC0xMC0yMyAgTWF0dCBCYWtl
ciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUg
c2hvdWxkIHN1cHBvcnQgZGVsZXRpbmcgcm93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5ODAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDY1
NTcwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGluc3BlY3Rvci90YWJsZS9yZXNvdXJjZXMvdGFibGUtdXRpbGl0aWVzLmpzOgorICAgICAgICAo
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LlRhYmxlRGVsZWdhdGUu
cHJvdG90eXBlLnRhYmxlRGlkUmVtb3ZlUm93cyk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3Rl
ckluaXRpYWxpemVyLmNyZWF0ZURhdGFTb3VyY2UpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0
ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlKToKKyAgICAgICAgKFRlc3RQ
YWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5jcmVhdGVUYWJsZVdpdGhEZWxl
Z2F0ZSk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKToKKyAgICAgICAg
VXBkYXRlIHRhYmxlIHRlc3QgdXRpbGl0aWVzIHRvIGtlZXAgVGFibGVEYXRhU291cmNlIGJhY2tp
bmcgYXJyYXkKKyAgICAgICAgaW4gc3luYyB3aXRoIHRoZSB0YWJsZS4gQWxzbyBhbGxvdyBudW1i
ZXIgb2Ygcm93cyB0byBiZSBzcGVjaWZpZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdGFibGUv
dGFibGUtcmVtb3ZlLXJvd3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvdGFibGUvdGFibGUtcmVtb3ZlLXJvd3MuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCB0ZXN0
cyBmb3IgbmV3IG1ldGhvZCBgVGFibGUucHJvdG90eXBlLnJlbW92ZVNlbGVjdGVkUm93c2AuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1zZXQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC5odG1sOgorICAgICAgICBB
ZGQgdGVzdHMgZm9yIG5ldyBtZXRob2QgYEluZGV4U2V0LnByb3RvdHlwZS5jbG9uZWAuCisKIDIw
MTgtMTAtMjMgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzI4MC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90YWJsZS9yZXNvdXJjZXMvdGFibGUtdXRpbGl0aWVzLmpzIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RhYmxlL3Jlc291cmNlcy90YWJsZS11dGlsaXRpZXMuanMKaW5kZXggYzBk
OTZkOWViYWU1Y2M3ZDcwYzdiOTRlODJiYjAxMjZhN2M4MTRiMS4uMDQ3MzNhZjEwZDcyZmNlYWIw
MjI2OTQ5NDBkZDZkZjY1ZThjMGQ3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RhYmxlL3Jlc291cmNlcy90YWJsZS11dGlsaXRpZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RhYmxlL3Jlc291cmNlcy90YWJsZS11dGlsaXRpZXMuanMKQEAgLTIxLDYgKzIxLDEz
IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICAgICAgdGhp
cy5pdGVtcyA9IGl0ZW1zIHx8IFtdOwogICAgICAgICB9CiAKKyAgICAgICAgdGFibGVEaWRSZW1v
dmVSb3dzKHRhYmxlLCByb3dJbmRleGVzKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBQcmV2
ZW50IGRhdGEgc291cmNlIGZyb20gZ2V0dGluZyBvdXQgb2Ygc3luYy4KKyAgICAgICAgICAgIGZv
ciAobGV0IGkgPSByb3dJbmRleGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKQorICAgICAgICAg
ICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGksIDEpOworICAgICAgICB9CisKICAgICAgICAgdGFi
bGVTZWxlY3Rpb25EaWRDaGFuZ2UodGFibGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcygiVGFibGUgc2VsZWN0aW9uIGNoYW5nZWQuIik7CkBAIC0zNiw5ICs0Myw5
IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICB9CiAgICAg
fTsKIAotICAgIGZ1bmN0aW9uIGNyZWF0ZURhdGFTb3VyY2UoKSB7CisgICAgZnVuY3Rpb24gY3Jl
YXRlRGF0YVNvdXJjZShudW1iZXJPZlJvd3MgPSAxMCkgewogICAgICAgICBsZXQgaXRlbXMgPSBb
XTsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IG51bWJlck9mUm93czsgKytpKQogICAgICAgICAgICAgaXRlbXMucHVzaCh7
aW5kZXg6IGksIG5hbWU6IGBSb3cgJHtpfWB9KTsKIAogICAgICAgICByZXR1cm4gbmV3IEluc3Bl
Y3RvclRlc3QuVGFibGVEYXRhU291cmNlKGl0ZW1zKTsKQEAgLTU4LDE2ICs2NSwxNiBAQCBUZXN0
UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAgcmV0dXJuIHRhYmxlOwog
ICAgIH0KIAotICAgIEluc3BlY3RvclRlc3QuY3JlYXRlVGFibGUgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgbGV0IGRhdGFTb3VyY2UgPSBjcmVhdGVEYXRhU291cmNlKCk7CisgICAgSW5zcGVjdG9y
VGVzdC5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uKG51bWJlck9mUm93cykgeworICAgICAgICBsZXQg
ZGF0YVNvdXJjZSA9IGNyZWF0ZURhdGFTb3VyY2UobnVtYmVyT2ZSb3dzKTsKICAgICAgICAgbGV0
IGRlbGVnYXRlID0gbmV3IEluc3BlY3RvclRlc3QuVGFibGVEZWxlZ2F0ZShkYXRhU291cmNlLml0
ZW1zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVRhYmxlSW50ZXJuYWwoZGF0YVNvdXJjZSwgZGVs
ZWdhdGUpOwogICAgIH07CiAKLSAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlV2l0aERlbGVn
YXRlID0gZnVuY3Rpb24oZGVsZWdhdGUpIHsKKyAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxl
V2l0aERlbGVnYXRlID0gZnVuY3Rpb24oZGVsZWdhdGUsIG51bWJlck9mUm93cykgewogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChkZWxlZ2F0ZSBpbnN0YW5jZW9mIEluc3BlY3RvclRlc3Qu
VGFibGVEZWxlZ2F0ZSk7CiAKLSAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBjcmVhdGVEYXRhU291
cmNlKCk7CisgICAgICAgIGxldCBkYXRhU291cmNlID0gY3JlYXRlRGF0YVNvdXJjZShudW1iZXJP
ZlJvd3MpOwogICAgICAgICBkZWxlZ2F0ZS5pdGVtcyA9IGRhdGFTb3VyY2UuaXRlbXM7CiAgICAg
ICAgIHJldHVybiBjcmVhdGVUYWJsZUludGVybmFsKGRhdGFTb3VyY2UsIGRlbGVnYXRlKTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RhYmxlL3RhYmxlLXJlbW92
ZS1yb3dzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90YWJsZS90YWJsZS1y
ZW1vdmUtcm93cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI5YWI5ODI0ZWVjZDkwODc0OTNj
ZGNmMjFhZDY5Mjk5YmY0MGE1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MSBA
QAorVGVzdHMgdGhhdCBXSS5UYWJsZS5yZW1vdmVTZWxlY3RlZFJvd3MgY29ycmVjdGx5IHVwZGF0
ZXMgdGhlIHNlbGVjdGlvbiBiZWZvcmUgcmVtb3ZpbmcgdGhlIGV4cGVjdGVkIHJvdyhzKS4KKwor
QW4gYXN0ZXJpeCAoKikgaW5kaWNhdGVzIGEgc2VsZWN0ZWQgcm93OyBhIGh5cGhlbiAoLSkgaW5k
aWNhdGVzIGEgcmVtb3ZlZCByb3cuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBUYWJsZS5S
ZW1vdmVSb3dzCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGFibGUuUmVtb3ZlU2VsZWN0ZWQuU2lu
Z2xlLlNlbGVjdEZvbGxvd2luZworR2l2ZW4gYSBUYWJsZSB3aXRoIHNlbGVjdGVkIHJvdyhzKSAw
OgorICogUm93IDAKKyAgIFJvdyAxCisgICBSb3cgMgorICAgUm93IDMKK1NlbGVjdGlvbiBjaGFu
Z2VkIGJlZm9yZSByZW1vdmU6CisgLSBSb3cgMAorICogUm93IDEKKyAgIFJvdyAyCisgICBSb3cg
MworUEFTUzogU2hvdWxkIHJlbW92ZSByb3cocykgMC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFRhYmxlLlJlbW92ZVNlbGVjdGVkLlNpbmdsZS5TZWxlY3RQcmVjZWRpbmcKK0dpdmVuIGEgVGFi
bGUgd2l0aCBzZWxlY3RlZCByb3cocykgMzoKKyAgIFJvdyAwCisgICBSb3cgMQorICAgUm93IDIK
KyAqIFJvdyAzCitTZWxlY3Rpb24gY2hhbmdlZCBiZWZvcmUgcmVtb3ZlOgorICAgUm93IDAKKyAg
IFJvdyAxCisgKiBSb3cgMgorIC0gUm93IDMKK1BBU1M6IFNob3VsZCByZW1vdmUgcm93KHMpIDMu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUYWJsZS5SZW1vdmVTZWxlY3RlZC5NdWx0aXBsZS5T
ZWxlY3RGb2xsb3dpbmcKK0dpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3cocykgMCwyOgor
ICogUm93IDAKKyAgIFJvdyAxCisgKiBSb3cgMgorICAgUm93IDMKK1NlbGVjdGlvbiBjaGFuZ2Vk
IGJlZm9yZSByZW1vdmU6CisgLSBSb3cgMAorICAgUm93IDEKKyAtIFJvdyAyCisgKiBSb3cgMwor
UEFTUzogU2hvdWxkIHJlbW92ZSByb3cocykgMCwyLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
VGFibGUuUmVtb3ZlU2VsZWN0ZWQuTXVsdGlwbGUuU2VsZWN0SG9sZQorR2l2ZW4gYSBUYWJsZSB3
aXRoIHNlbGVjdGVkIHJvdyhzKSAwLDM6CisgKiBSb3cgMAorICAgUm93IDEKKyAgIFJvdyAyCisg
KiBSb3cgMworU2VsZWN0aW9uIGNoYW5nZWQgYmVmb3JlIHJlbW92ZToKKyAtIFJvdyAwCisgKiBS
b3cgMQorICAgUm93IDIKKyAtIFJvdyAzCitQQVNTOiBTaG91bGQgcmVtb3ZlIHJvdyhzKSAwLDMu
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUYWJsZS5SZW1vdmVTZWxlY3RlZC5NdWx0aXBsZS5T
ZWxlY3RQcmVjZWRpbmcKK0dpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3cocykgMiwzOgor
ICAgUm93IDAKKyAgIFJvdyAxCisgKiBSb3cgMgorICogUm93IDMKK1NlbGVjdGlvbiBjaGFuZ2Vk
IGJlZm9yZSByZW1vdmU6CisgICBSb3cgMAorICogUm93IDEKKyAtIFJvdyAyCisgLSBSb3cgMwor
UEFTUzogU2hvdWxkIHJlbW92ZSByb3cocykgMiwzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGFibGUvdGFibGUtcmVtb3ZlLXJvd3MuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNjUzNjQ2
YWFjMzdmYzJkZjA4MmJjNWUyMzQ4ZGUyZjVhZTRlZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGFibGUvdGFibGUtcmVtb3ZlLXJvd3MuaHRtbApAQCAtMCwwICsx
LDEyOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RhYmxlLXV0aWxpdGllcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5yZWRp
cmVjdFJlcXVlc3RBbmltYXRpb25GcmFtZSgpOworCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVTeW5jU3VpdGUoIlRhYmxlLlJlbW92ZVJvd3MiKTsKKworICAgIGZ1bmN0aW9u
IGxvZ1RhYmxlKHRhYmxlLCByb3dzVG9SZW1vdmUgPSBbXSkgeworICAgICAgICBmb3IgKGxldCBy
b3dJbmRleCA9IDA7IHJvd0luZGV4IDwgdGFibGUubnVtYmVyT2ZSb3dzOyArK3Jvd0luZGV4KSB7
CisgICAgICAgICAgICBsZXQgdHlwZSA9ICIgIjsKKyAgICAgICAgICAgIGlmIChyb3dzVG9SZW1v
dmUuaW5jbHVkZXMocm93SW5kZXgpKQorICAgICAgICAgICAgICAgIHR5cGUgPSAiLSI7CisgICAg
ICAgICAgICBlbHNlIGlmICh0YWJsZS5zZWxlY3RlZFJvd3MuaW5jbHVkZXMocm93SW5kZXgpKQor
ICAgICAgICAgICAgICAgIHR5cGUgPSAiKiI7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgICR7dHlwZX0gUm93ICR7cm93SW5kZXh9YCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
bGFzcyBSZW1vdmVSb3dzVGVzdERlbGVnYXRlIGV4dGVuZHMgSW5zcGVjdG9yVGVzdC5UYWJsZURl
bGVnYXRlCisgICAgeworICAgICAgICBjb25zdHJ1Y3RvcigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cyA9IG51bGw7Cisg
ICAgICAgICAgICB0aGlzLl91bmRlclRlc3QgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFB1YmxpYworCisgICAgICAgIHRyaWdnZXJSZW1vdmVTZWxlY3RlZFJvd3ModGFibGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCF0aGlzLl90YWJsZVVu
ZGVyVGVzdCk7CisKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cyA9IHRhYmxlLnNlbGVj
dGVkUm93czsKKyAgICAgICAgICAgIHRoaXMuX3VuZGVyVGVzdCA9IHRydWU7CisKKyAgICAgICAg
ICAgIHRhYmxlLnJlbW92ZVNlbGVjdGVkUm93cygpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VGFibGUgZGVsZWdhdGUKKworICAgICAgICB0YWJsZURpZFJlbW92ZVJvd3ModGFibGUsIHJvd0lu
ZGV4ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1cGVyLnRhYmxlRGlkUmVtb3ZlUm93cyh0
YWJsZSwgcm93SW5kZXhlcyk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hh
bGxvd0VxdWFsKHJvd0luZGV4ZXMsIHRoaXMuX3NlbGVjdGVkUm93cywgYFNob3VsZCByZW1vdmUg
cm93KHMpICR7dGhpcy5fc2VsZWN0ZWRSb3dzfS5gKTsKKyAgICAgICAgICAgIHRoaXMuX3VuZGVy
VGVzdCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdGFibGVTZWxlY3Rpb25EaWRDaGFu
Z2UodGFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fdW5kZXJUZXN0KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
YFNlbGVjdGlvbiBjaGFuZ2VkIGJlZm9yZSByZW1vdmU6YCk7CisgICAgICAgICAgICBsb2dUYWJs
ZSh0YWJsZSwgdGhpcy5fc2VsZWN0ZWRSb3dzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNv
bnN0IG51bWJlck9mUm93cyA9IDQ7CisgICAgY29uc3QgbGFzdFJvd0luZGV4ID0gbnVtYmVyT2ZS
b3dzIC0gMTsKKworICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwg
cm93SW5kZXhlc30pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAg
bmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgICAg
IGxldCB0ZXN0RGVsZWdhdGUgPSBuZXcgUmVtb3ZlUm93c1Rlc3REZWxlZ2F0ZTsKKyAgICAgICAg
ICAgICAgICBsZXQgdGFibGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlV2l0aERlbGVnYXRl
KHRlc3REZWxlZ2F0ZSwgbnVtYmVyT2ZSb3dzKTsKKyAgICAgICAgICAgICAgICB0YWJsZS5hbGxv
d3NNdWx0aXBsZVNlbGVjdGlvbiA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBy
b3dJbmRleCBvZiByb3dJbmRleGVzKQorICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZWxlY3RS
b3cocm93SW5kZXgsIHRydWUpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
YEdpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3cocykgJHtyb3dJbmRleGVzfTpgKTsKKyAg
ICAgICAgICAgICAgICBsb2dUYWJsZSh0YWJsZSk7CisKKyAgICAgICAgICAgICAgICB0ZXN0RGVs
ZWdhdGUudHJpZ2dlclJlbW92ZVNlbGVjdGVkUm93cyh0YWJsZSk7CisKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVGFibGUuUmVtb3ZlU2VsZWN0ZWQuU2luZ2xl
LlNlbGVjdEZvbGxvd2luZyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVtb3ZlIHRoZSBzZWxl
Y3RlZCByb3csIGNhdXNpbmcgdGhlIGZvbGxvd2luZyByb3cgdG8gYmUgc2VsZWN0ZWQuIiwKKyAg
ICAgICAgcm93SW5kZXhlczogWzBdLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiVGFibGUuUmVtb3ZlU2VsZWN0ZWQuU2luZ2xlLlNlbGVjdFByZWNlZGluZyIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVtb3ZlIHRoZSBzZWxlY3RlZCByb3csIGNhdXNpbmcg
dGhlIHByZWNlZGluZyByb3cgdG8gYmUgc2VsZWN0ZWQuIiwKKyAgICAgICAgcm93SW5kZXhlczog
W2xhc3RSb3dJbmRleF0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJUYWJsZS5SZW1vdmVTZWxlY3RlZC5NdWx0aXBsZS5TZWxlY3RGb2xsb3dpbmciLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlJlbW92ZSBzZWxlY3RlZCByb3dzLCBjYXVzaW5nIHRoZSByb3cg
Zm9sbG93aW5nIHRoZSBzZWxlY3Rpb24gdG8gYmUgc2VsZWN0ZWQuIiwKKyAgICAgICAgcm93SW5k
ZXhlczogWzAsIGxhc3RSb3dJbmRleCAtIDFdLAorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiVGFibGUuUmVtb3ZlU2VsZWN0ZWQuTXVsdGlwbGUuU2VsZWN0SG9s
ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVtb3ZlIHNlbGVjdGVkIHJvd3MsIGNhdXNpbmcg
dGhlIGZpcnN0IGRlc2VsZWN0ZWQgcm93IGluc2lkZSB0aGUgc2VsZWN0aW9uIHRvIGJlIHNlbGVj
dGVkLiIsCisgICAgICAgIHJvd0luZGV4ZXM6IFswLCBsYXN0Um93SW5kZXhdLAorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVGFibGUuUmVtb3ZlU2VsZWN0ZWQu
TXVsdGlwbGUuU2VsZWN0UHJlY2VkaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUg
c2VsZWN0ZWQgcm93cywgY2F1c2luZyB0aGUgcm93IHByZWNlZGluZyB0aGUgc2VsZWN0aW9uIHRv
IGJlIHNlbGVjdGVkLiIsCisgICAgICAgIHJvd0luZGV4ZXM6IFtsYXN0Um93SW5kZXggLSAxLCBs
YXN0Um93SW5kZXhdLAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIj4KKyAg
ICA8cD5UZXN0cyB0aGF0IFdJLlRhYmxlLnJlbW92ZVNlbGVjdGVkUm93cyBjb3JyZWN0bHkgdXBk
YXRlcyB0aGUgc2VsZWN0aW9uIGJlZm9yZSByZW1vdmluZyB0aGUgZXhwZWN0ZWQgcm93KHMpLjwv
cD4KKyAgICA8cD5BbiBhc3Rlcml4ICgqKSBpbmRpY2F0ZXMgYSBzZWxlY3RlZCByb3c7IGEgaHlw
aGVuICgtKSBpbmRpY2F0ZXMgYSByZW1vdmVkIHJvdy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1zZXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0LWV4
cGVjdGVkLnR4dAppbmRleCBjMzM2M2NmN2NhODNkYmUwMWMxYTViYjM5ZjQxNTRlMTlkMzIzYTdh
Li5mOGIyOTRlZjEwMmJkY2VkZTkxNDEzYmUwNDcyYTI1OGY5ZjQwZjQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1zZXQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC1leHBlY3RlZC50
eHQKQEAgLTY4LDMgKzY4LDcgQEAgUEFTUzogSW5kZXggbGVzcyB0aGFuIDEgc2hvdWxkIGJlIE5h
Ti4KIFBBU1M6IEluZGV4IGxlc3MgdGhhbiAyIHNob3VsZCBiZSAxLgogUEFTUzogSW5kZXggbGVz
cyB0aGFuIDMgc2hvdWxkIGJlIDIuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBJbmRleFNldC5w
cm90b3R5cGUuY2xvbmUKK1BBU1M6IENsb25lZCBhbmQgb3JpZ2luYWwgc2hvdWxkIGJlIGRpZmZl
cmVudCBvYmplY3RzLgorUEFTUzogQ2xvbmVkIGFuZCBvcmlnaW5hbCBzaG91bGQgaGF2ZSB0aGUg
c2FtZSB2YWx1ZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRl
c3RzL2luZGV4LXNldC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5k
ZXgtc2V0Lmh0bWwKaW5kZXggMDVhM2RiOTczYmFlMDA4MTljNDM1ODNiN2FjYTQ5OGFjZWFiN2I4
MS4uM2UzOWEyNWViZjBlMTgxODQ5OTVjYjU4ZmI4ZDBjYWI0NjI5NTNjMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0Lmh0bWwKQEAgLTE5NCw2ICsx
OTQsMTggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAorICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkluZGV4U2V0LnByb3RvdHlwZS5jbG9uZSIs
CisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb3JpZ2luYWwgPSBuZXcgV0kuSW5k
ZXhTZXQoWzEsIDIsIDNdKTsKKyAgICAgICAgICAgIGxldCBjbG9uZWQgPSBvcmlnaW5hbC5jbG9u
ZSgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RFcXVhbChjbG9uZWQsIG9y
aWdpbmFsLCAiQ2xvbmVkIGFuZCBvcmlnaW5hbCBzaG91bGQgYmUgZGlmZmVyZW50IG9iamVjdHMu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChBcnJheS5m
cm9tKGNsb25lZCksIEFycmF5LmZyb20ob3JpZ2luYWwpLCAiQ2xvbmVkIGFuZCBvcmlnaW5hbCBz
aG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZXMuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2go
KTsKIH0KIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353069</attachid>
            <date>2018-10-24 18:17:48 -0700</date>
            <delta_ts>2018-10-27 15:52:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189803-20181024181742.patch</filename>
            <type>text/plain</type>
            <size>23604</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA4
ODEzZGY1NDM2M2I0MTBmNTk2NzczYzQ1YTQ3Nzk3ZDJmZTJkYzBlLi4wMjE2YmY5ZDUzNGFlODk2
OGI5YjlhOWU0YjBlZDg4ZDIyMTIzZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOC0xMC0yNCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUgc2hvdWxkIHN1cHBvcnQgZGVsZXRpbmcg
cm93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
ODAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDY1NTcwOT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbWV0aG9kcyBmb3IgcmVtb3Zpbmcg
cm93cyBmcm9tIGEgVGFibGUgd2l0aG91dCByZWxvYWRpbmcgdGhlIGRhdGEKKyAgICAgICAgc291
cmNlLiBUaGlzIHBhdGNoIGFkZHMgVGFibGUucHJvdG90eXBlLnJlbW92ZVJvdyBmb3IgcmVtb3Zp
bmcgYSBzaW5nbGUKKyAgICAgICAgcm93LCBhbmQgVGFibGUucHJvdG90eXBlLnJlbW92ZVNlbGVj
dGVkUm93cyBmb3IgcmVtb3ZpbmcgdGhlIGVudGlyZSBzZWxlY3Rpb24uCisgICAgICAgIFRoZSBs
YXR0ZXIgYWxzbyBhdHRlbXB0cyB0byBzZWxlY3QgYSBuZXcgcm93LCBpZiBwb3NzaWJsZSwgYmVm
b3JlIHJlbW92aW5nCisgICAgICAgIHRoZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0Jhc2UvSW5kZXhTZXQuanM6CisgICAgICAgIChXSS5JbmRleFNldC5wcm90b3R5cGUu
Y2xvbmUpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qczoKKyAgICAg
ICAgKFdJLlRhYmxlKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5nZXQgbnVtYmVyT2ZS
b3dzKToKKyAgICAgICAgQ2FjaGUgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZSBkYXRh
IHNvdXJjZS4gSW52YWxpZGF0ZSBjYWNoZWQKKyAgICAgICAgdmFsdWUgd2hlbmV2ZXIgdGFibGUg
ZGF0YSBpcyByZWxvYWRlZC4gUmVtb3Zpbmcgcm93cyBpbW1lZGlhdGVseSB1cGRhdGVzCisgICAg
ICAgIGNhY2hlZCB2YWx1ZSwgd2l0aG91dCBpbmN1cnJpbmcgYSBwb3RlbnRpYWxseSBleHBlbnNp
dmUgcmVsb2FkLgorCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUucmVsb2FkRGF0YSk6Cisg
ICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUucmVtb3ZlUm93KToKKyAgICAgICAgKFdJLlRhYmxl
LnByb3RvdHlwZS5yZW1vdmVTZWxlY3RlZFJvd3MpOgorICAgICAgICBSZW1vdmUgdGhlIHNlbGVj
dGVkIHJvd3MgYW5kIHNlbGVjdCBhIG5ldyByb3csIGlmIHBvc3NpYmxlLgorICAgICAgICAoV0ku
VGFibGUucHJvdG90eXBlLl91cGRhdGVWaXNpYmxlUm93cyk6CisgICAgICAgIChXSS5UYWJsZS5w
cm90b3R5cGUuX2hhbmRsZUtleURvd24pOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl9k
ZXNlbGVjdEFsbEFuZFNlbGVjdCk6CisgICAgICAgIERyaXZlLWJ5IGZpeDogc2hvdWxkIHdvcmsg
d2hlbiBgcm93VG9TZWxlY3RgIGlzbid0IGFscmVhZHkgc2VsZWN0ZWQuCisgICAgICAgIChXSS5U
YWJsZS5wcm90b3R5cGUuX3JlbW92ZVJvd3MpOgorICAgICAgICBSZW1vdmUgcm93cyBhbmQgYWRq
dXN0IHRoZSBpbmRleGVzIG9mIHJvd3MgdGhhdCBhcmUgc2hpZnRlZCB1cCBhcyBhIHJlc3VsdAor
ICAgICAgICBvZiBwcmVjZWRpbmcgcm93cyBiZWluZyByZW1vdmVkLgorCiAyMDE4LTEwLTI0ICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBwb3BvdmVycyBmb3IgZnVuY3Rpb24gc291cmNlIGNvZGUgYXJlIG1hbGZvcm1lZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9JbmRleFNldC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvSW5kZXhTZXQuanMK
aW5kZXggZjQ4Y2Q3MTI4NjJiYTE4NmQyYTk2ZDU0MWRiMWM1NGZjMWM3MmVhNC4uYjFjMTg0NzBi
YzEzZWU3MmU4MmZiMWI4Y2I0YjkxNTI2MDllMDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9JbmRleFNldC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0luZGV4U2V0LmpzCkBAIC05Niw2ICs5Niwx
MyBAQCBXSS5JbmRleFNldCA9IGNsYXNzIEluZGV4U2V0CiAgICAgICAgIHRoaXMuX2luZGV4ZXMg
PSBbXTsKICAgICB9CiAKKyAgICBjbG9uZSgpCisgICAgeworICAgICAgICBsZXQgaW5kZXhTZXQg
PSBuZXcgV0kuSW5kZXhTZXQ7CisgICAgICAgIGluZGV4U2V0Ll9pbmRleGVzID0gdGhpcy5faW5k
ZXhlcy5zbGljZSgpOworICAgICAgICByZXR1cm4gaW5kZXhTZXQ7CisgICAgfQorCiAgICAgaW5k
ZXhHcmVhdGVyVGhhbih2YWx1ZSkKICAgICB7CiAgICAgICAgIGNvbnN0IGZvbGxvd2luZyA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UYWJsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rh
YmxlLmpzCmluZGV4IDgyYjNjMzE3MTE1OGIxYjZiNDYwZDFiNjUwZmJhMDUyYzAzNTYxMWQuLmQ5
ZGFlN2JkYmE4YzI2OTVmZWZmNTAyN2JiMWM2ZDE1NDNiMzJkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCkBAIC03Niw2ICs3
Niw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRo
aXMuX3Jlc2l6ZXJzRWxlbWVudC5jbGFzc05hbWUgPSAicmVzaXplcnMiOwogCiAgICAgICAgIHRo
aXMuX2NhY2hlZFJvd3MgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9jYWNoZWROdW1iZXJPZlJv
d3MgPSBOYU47CiAKICAgICAgICAgdGhpcy5fY29sdW1uU3BlY3MgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9jb2x1bW5PcmRlciA9IFtdOwpAQCAtMTMyLDYgKzEzMywxNCBAQCBXSS5UYWJsZSA9
IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogCiAgICAgZ2V0IHNjcm9sbENvbnRhaW5lcigp
IHsgcmV0dXJuIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQ7IH0KIAorICAgIGdldCBudW1i
ZXJPZlJvd3MoKQorICAgIHsKKyAgICAgICAgaWYgKGlzTmFOKHRoaXMuX2NhY2hlZE51bWJlck9m
Um93cykpCisgICAgICAgICAgICB0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3MgPSB0aGlzLl9kYXRh
U291cmNlLnRhYmxlTnVtYmVyT2ZSb3dzKHRoaXMpOworCisgICAgICAgIHJldHVybiB0aGlzLl9j
YWNoZWROdW1iZXJPZlJvd3M7CisgICAgfQorCiAgICAgZ2V0IHNvcnRPcmRlcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc29ydE9yZGVyOwpAQCAtMjQxLDYgKzI1MCw3IEBAIFdJLlRh
YmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3NlbGVjdGVk
Um93SW5kZXggPSBOYU47CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5jbGVhcigpOwogCisg
ICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyA9IE5hTjsKICAgICAgICAgdGhpcy5fcHJl
dmlvdXNSZXZlYWxlZFJvd0NvdW50ID0gTmFOOwogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7
CiAgICAgfQpAQCAtMzczLDYgKzM4Myw0OSBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVu
ZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9kZXNlbGVjdEFsbEFuZFNlbGVjdChyb3dJbmRleCk7
CiAgICAgfQogCisgICAgcmVtb3ZlUm93KHJvd0luZGV4KQorICAgIHsKKyAgICAgICAgaWYgKHJv
d0luZGV4ID49IHRoaXMubnVtYmVyT2ZSb3dzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKKyAgICAgICAgICAgIHRoaXMu
ZGVzZWxlY3RSb3cocm93SW5kZXgpOworCisgICAgICAgIHRoaXMuX3JlbW92ZVJvd3MobmV3IFdJ
LkluZGV4U2V0KFtyb3dJbmRleF0pKTsKKyAgICB9CisKKyAgICByZW1vdmVTZWxlY3RlZFJvd3Mo
KQorICAgIHsKKyAgICAgICAgbGV0IG51bWJlck9mU2VsZWN0ZWRSb3dzID0gdGhpcy5fc2VsZWN0
ZWRSb3dzLnNpemU7CisgICAgICAgIGlmICghbnVtYmVyT2ZTZWxlY3RlZFJvd3MpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVHJ5IHNlbGVjdGluZyB0aGUgcm93IGZvbGxvd2lu
ZyB0aGUgc2VsZWN0aW9uLgorICAgICAgICBsZXQgbGFzdFNlbGVjdGVkUm93ID0gdGhpcy5fc2Vs
ZWN0ZWRSb3dzLmxhc3RJbmRleDsKKyAgICAgICAgbGV0IHJvd1RvU2VsZWN0ID0gbGFzdFNlbGVj
dGVkUm93ICsgMTsKKworICAgICAgICBpZiAocm93VG9TZWxlY3QgPT09IHRoaXMubnVtYmVyT2ZS
b3dzKSB7CisgICAgICAgICAgICAvLyBJZiBubyByb3cgZXhpc3RzIGFmdGVyIHRoZSBsYXN0IHNl
bGVjdGVkIHJvdywgdHJ5IHNlbGVjdGluZyBhCisgICAgICAgICAgICAvLyBkZXNlbGVjdGVkIHJv
dyAoaG9sZSkgd2l0aGluIHRoZSBzZWxlY3Rpb24uCisgICAgICAgICAgICBsZXQgZmlyc3RTZWxl
Y3RlZFJvdyA9IHRoaXMuX3NlbGVjdGVkUm93cy5maXJzdEluZGV4OworICAgICAgICAgICAgaWYg
KGxhc3RTZWxlY3RlZFJvdyAtIGZpcnN0U2VsZWN0ZWRSb3cgPiBudW1iZXJPZlNlbGVjdGVkUm93
cykgeworICAgICAgICAgICAgICAgIHJvd1RvU2VsZWN0ID0gdGhpcy5fc2VsZWN0ZWRSb3dzLmZp
cnN0SW5kZXggKyAxOworICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLl9zZWxlY3RlZFJvd3Mu
aGFzKHJvd1RvU2VsZWN0KSkKKyAgICAgICAgICAgICAgICAgICAgcm93VG9TZWxlY3QrKzsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBj
b250YWlucyBubyBob2xlcywgdHJ5IHNlbGVjdGluZyB0aGUgcm93CisgICAgICAgICAgICAgICAg
Ly8gcHJlY2VkaW5nIHRoZSBzZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgcm93VG9TZWxlY3Qg
PSBmaXJzdFNlbGVjdGVkUm93ID4gMCA/IGZpcnN0U2VsZWN0ZWRSb3cgLSAxIDogTmFOOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hhbmdlIHRoZSBzZWxlY3Rpb24g
YmVmb3JlIHJlbW92aW5nIHJvd3MuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3IKKyAgICAgICAg
Ly8gb2YgbWFjT1MgRmluZGVyIChpbiBsaXN0IGFuZCBjb2x1bW4gbW9kZXMpIHdoZW4gcmVtb3Zp
bmcgc2VsZWN0ZWQgaXRlbXMuCisgICAgICAgIGxldCBvbGRTZWxlY3RlZFJvd3MgPSB0aGlzLl9z
ZWxlY3RlZFJvd3MuY2xvbmUoKTsKKyAgICAgICAgdGhpcy5fZGVzZWxlY3RBbGxBbmRTZWxlY3Qo
cm93VG9TZWxlY3QpOworICAgICAgICB0aGlzLl9yZW1vdmVSb3dzKG9sZFNlbGVjdGVkUm93cyk7
CisgICAgfQorCiAgICAgY29sdW1uV2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5TcGVjcy5nZXQoaWRlbnRpZmllcik7CkBAIC03OTAs
NyArODQzLDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gdGhpcy5fY2FjaGVkV2lkdGg7CiAgICAgICAgIGxldCBh
dmFpbGFibGVIZWlnaHQgPSB0aGlzLl9jYWNoZWRIZWlnaHQ7CiAKLSAgICAgICAgbGV0IG51bWJl
ck9mUm93cyA9IHRoaXMuX2RhdGFTb3VyY2UudGFibGVOdW1iZXJPZlJvd3ModGhpcyk7CisgICAg
ICAgIGxldCBudW1iZXJPZlJvd3MgPSB0aGlzLm51bWJlck9mUm93czsKICAgICAgICAgdGhpcy5f
Y2FjaGVkTnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZSb3dzOwogCiAgICAgICAgIGxldCBjb250ZW50
SGVpZ2h0ID0gbnVtYmVyT2ZSb3dzICogdGhpcy5fcm93SGVpZ2h0OwpAQCAtMTAxMSw3ICsxMDY0
LDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYg
KGJlbG93VG9wVGhyZXNob2xkICYmIGFib3ZlQm90dG9tVGhyZXNob2xkICYmICFpc05hTih0aGlz
Ll9wcmV2aW91c1JldmVhbGVkUm93Q291bnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGxldCBudW1iZXJPZlJvd3MgPSB0aGlzLl9kYXRhU291cmNlLnRhYmxlTnVtYmVyT2ZSb3dz
KHRoaXMpOworICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhpcy5udW1iZXJPZlJvd3M7CiAg
ICAgICAgIHRoaXMuX3ByZXZpb3VzUmV2ZWFsZWRSb3dDb3VudCA9IG51bWJlck9mUm93czsKIAog
ICAgICAgICAvLyBTY3JvbGwgYmFjayB1cCBpZiB0aGUgbnVtYmVyIG9mIHJvd3Mgd2FzIHJlZHVj
ZWQgc3VjaCB0aGF0IHRoZSBleGlzdGluZwpAQCAtMTIyMiw2ICsxMjc1LDcgQEAgV0kuVGFibGUg
PSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5
IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgIHJldHVybjsK
IAorICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhpcy5udW1iZXJPZlJvd3M7CiAgICAgICAg
IGxldCByb3dUb1NlbGVjdCA9IE5hTjsKIAogICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIlVwIikgewpAQCAtMTM2Niw4ICsxNDIwLDYgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJs
ZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmb3IgKGxl
dCBzZWxlY3RlZFJvd0luZGV4IG9mIHRoaXMuX3NlbGVjdGVkUm93cykgewotICAgICAgICAgICAg
aWYgKHNlbGVjdGVkUm93SW5kZXggPT09IHJvd0luZGV4KQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgbGV0IG9sZFNlbGVjdGVkUm93ID0gdGhpcy5fY2FjaGVkUm93cy5n
ZXQoc2VsZWN0ZWRSb3dJbmRleCk7CiAgICAgICAgICAgICBpZiAob2xkU2VsZWN0ZWRSb3cpCiAg
ICAgICAgICAgICAgICAgb2xkU2VsZWN0ZWRSb3cuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQi
KTsKQEAgLTEzNzYsMTIgKzE0MjgsNzEgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dJbmRleCA9IHJvd0luZGV4OwogICAg
ICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuY2xlYXIoKTsKIAotICAgICAgICBpZiAoIWlzTmFOKHJv
d0luZGV4KSkKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5hZGQocm93SW5kZXgpOwor
ICAgICAgICBpZiAoIWlzTmFOKHJvd0luZGV4KSkgeworICAgICAgICAgICAgbGV0IG5ld1NlbGVj
dGVkUm93ID0gdGhpcy5fY2FjaGVkUm93cy5nZXQocm93SW5kZXgpOworICAgICAgICAgICAgaWYg
KG5ld1NlbGVjdGVkUm93KSB7CisgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWRSb3cuY2xhc3NM
aXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3Mu
YWRkKHJvd0luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
X25vdGlmeVNlbGVjdGlvbkRpZENoYW5nZSgpOwogICAgIH0KIAorICAgIF9yZW1vdmVSb3dzKHJv
d0luZGV4ZXMpCisgICAgeworICAgICAgICBsZXQgcmVtb3ZlZCA9IDA7CisKKyAgICAgICAgbGV0
IGFkanVzdFJvd0F0SW5kZXggPSAocm93SW5kZXgpID0+IHsKKyAgICAgICAgICAgIGxldCBuZXdJ
bmRleCA9IHJvd0luZGV4IC0gcmVtb3ZlZDsKKyAgICAgICAgICAgIGxldCByb3cgPSB0aGlzLl9j
YWNoZWRSb3dzLmdldChyb3dJbmRleCk7CisgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fY2FjaGVkUm93cy5kZWxldGUocm93Ll9faW5kZXgpOworICAgICAgICAg
ICAgICAgIHJvdy5fX2luZGV4ID0gbmV3SW5kZXg7CisgICAgICAgICAgICAgICAgdGhpcy5fY2Fj
aGVkUm93cy5zZXQobmV3SW5kZXgsIHJvdyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgeworICAgICAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkUm93cy5kZWxldGUocm93SW5kZXgpOworICAgICAgICAgICAgICAgIHRoaXMu
X3NlbGVjdGVkUm93cy5hZGQobmV3SW5kZXgpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9z
ZWxlY3RlZFJvd0luZGV4ID09PSByb3dJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRSb3dJbmRleCA9IG5ld0luZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIGlmIChyb3dJbmRleGVzLmhhcyh0aGlzLl9zZWxlY3RlZFJvd0luZGV4KSkKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93SW5kZXggPSBOYU47CisKKyAgICAgICAgZm9yIChs
ZXQgcm93SW5kZXggPSByb3dJbmRleGVzLmZpcnN0SW5kZXg7IHJvd0luZGV4IDw9IHJvd0luZGV4
ZXMubGFzdEluZGV4OyArK3Jvd0luZGV4KSB7CisgICAgICAgICAgICBpZiAocm93SW5kZXhlcy5o
YXMocm93SW5kZXgpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJvdyA9IHRoaXMuX2NhY2hlZFJv
d3MuZ2V0KHJvd0luZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAocm93KSB7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2NhY2hlZFJvd3MuZGVsZXRlKHJvd0luZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgcm93LnJlbW92ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZW1vdmVkKys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChyZW1vdmVkKQorICAgICAgICAgICAgICAgIGFkanVzdFJvd0F0SW5k
ZXgocm93SW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFyZW1vdmVkKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gcm93SW5kZXhlcy5s
YXN0SW5kZXggKyAxOyByb3dJbmRleCA8IHRoaXMuX2NhY2hlZE51bWJlck9mUm93czsgKytyb3dJ
bmRleCkKKyAgICAgICAgICAgIGFkanVzdFJvd0F0SW5kZXgocm93SW5kZXgpOworCisgICAgICAg
IHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyAtPSByZW1vdmVkOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3MgPj0gMCk7CisKKyAgICAgICAgaWYgKHRoaXMu
X2RlbGVnYXRlLnRhYmxlRGlkUmVtb3ZlUm93cykgeworICAgICAgICAgICAgdGhpcy5fZGVsZWdh
dGUudGFibGVEaWRSZW1vdmVSb3dzKHRoaXMsIEFycmF5LmZyb20ocm93SW5kZXhlcykpOworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY2FjaGVkTnVtYmVyT2ZSb3dzID09PSB0aGlz
Ll9kYXRhU291cmNlLnRhYmxlTnVtYmVyT2ZSb3dzKHRoaXMpLCAiVGFibGUgZGF0YSBzb3VyY2Ug
c2hvdWxkIHVwZGF0ZSBhZnRlciByZW1vdmluZyByb3dzLiIpOworICAgICAgICB9CisgICAgfQor
CiAgICAgX2lzUm93U2VsZWN0ZWQocm93SW5kZXgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc2VsZWN0ZWRSb3dzLmhhcyhyb3dJbmRleCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmM1OTk0MDJhYTI0NmJjNjUz
NzVhODRmZTNiNGI3YjNhMjliNTkwZS4uNDcxYmQwMjY5MzJjZmIxOTRiNGYxODc2ZjEzNzkxNzIx
OWMxNmJhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTEwLTI0ICBNYXR0IEJha2VyICA8
bWF0dGJha2VyQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBUYWJsZSBzaG91
bGQgc3VwcG9ydCBkZWxldGluZyByb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODk4MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0NjU1NzA5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL3RhYmxlL3Jlc291cmNlcy90YWJsZS11dGlsaXRpZXMuanM6CisgICAgICAgIChUZXN0
UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuVGFibGVEZWxlZ2F0ZS5wcm90
b3R5cGUudGFibGVEaWRSZW1vdmVSb3dzKToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5p
dGlhbGl6ZXIuY3JlYXRlRGF0YVNvdXJjZSk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3Rlcklu
aXRpYWxpemVyLkluc3BlY3RvclRlc3QuY3JlYXRlVGFibGUpOgorICAgICAgICAoVGVzdFBhZ2Uu
cmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlV2l0aERlbGVnYXRl
KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIpOgorICAgICAgICBVcGRh
dGUgdGFibGUgdGVzdCB1dGlsaXRpZXMgdG8ga2VlcCBUYWJsZURhdGFTb3VyY2UgYmFja2luZyBh
cnJheSBpbgorICAgICAgICBzeW5jIHdoZW4gcm93cyBhcmUgcmVtb3ZlZC4gQWxzbyBhbGxvdyB0
aGUgbnVtYmVyIG9mIHRhYmxlIHJvd3MgdG8gYmUKKyAgICAgICAgc3BlY2lmaWVkIHdoZW4gY3Jl
YXRpbmcgYSB0YWJsZSBmb3IgdGVzdGluZy4KKworICAgICAgICAqIGluc3BlY3Rvci90YWJsZS90
YWJsZS1yZW1vdmUtcm93cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIHRlc3Rz
IGZvciBuZXcgVGFibGUgbWV0aG9kcyBgcmVtb3ZlUm93KHJvd0luZGV4KWAgYW5kIGByZW1vdmVT
ZWxlY3RlZFJvd3MoKWAuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1z
ZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNl
dC5odG1sOgorICAgICAgICBBZGQgdGVzdHMgZm9yIG5ldyBJbmRleFNldCBtZXRob2QgYGNsb25l
KClgLgorCiAyMDE4LTEwLTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIEF0dGFjaG1lbnQgZmlsZW5hbWVzIHdpdGggUlRMIGNoYXJhY3RlcnMgc2hv
dWxkIGZvcm1hdCBzaW1pbGFyIHRvIEZpbmRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RhYmxlL3Jlc291cmNlcy90YWJsZS11dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGFibGUvcmVzb3VyY2VzL3RhYmxlLXV0aWxpdGllcy5qcwppbmRleCBjMGQ5NmQ5
ZWJhZTVjYzdkNzBjN2I5NGU4MmJiMDEyNmE3YzgxNGIxLi4wNDczM2FmMTBkNzJmY2VhYjAyMjY5
NDk0MGRkNmRmNjVlOGMwZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGFi
bGUvcmVzb3VyY2VzL3RhYmxlLXV0aWxpdGllcy5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGFibGUvcmVzb3VyY2VzL3RhYmxlLXV0aWxpdGllcy5qcwpAQCAtMjEsNiArMjEsMTMgQEAg
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgICAgICAgICB0aGlzLml0
ZW1zID0gaXRlbXMgfHwgW107CiAgICAgICAgIH0KIAorICAgICAgICB0YWJsZURpZFJlbW92ZVJv
d3ModGFibGUsIHJvd0luZGV4ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFByZXZlbnQg
ZGF0YSBzb3VyY2UgZnJvbSBnZXR0aW5nIG91dCBvZiBzeW5jLgorICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IHJvd0luZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpCisgICAgICAgICAgICAg
ICAgdGhpcy5pdGVtcy5zcGxpY2UoaSwgMSk7CisgICAgICAgIH0KKwogICAgICAgICB0YWJsZVNl
bGVjdGlvbkRpZENoYW5nZSh0YWJsZSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5wYXNzKCJUYWJsZSBzZWxlY3Rpb24gY2hhbmdlZC4iKTsKQEAgLTM2LDkgKzQzLDkgQEAg
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgICAgIH0KICAgICB9Owog
Ci0gICAgZnVuY3Rpb24gY3JlYXRlRGF0YVNvdXJjZSgpIHsKKyAgICBmdW5jdGlvbiBjcmVhdGVE
YXRhU291cmNlKG51bWJlck9mUm93cyA9IDEwKSB7CiAgICAgICAgIGxldCBpdGVtcyA9IFtdOwot
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbnVtYmVyT2ZSb3dzOyArK2kpCiAgICAgICAgICAgICBpdGVtcy5wdXNoKHtpbmRl
eDogaSwgbmFtZTogYFJvdyAke2l9YH0pOwogCiAgICAgICAgIHJldHVybiBuZXcgSW5zcGVjdG9y
VGVzdC5UYWJsZURhdGFTb3VyY2UoaXRlbXMpOwpAQCAtNTgsMTYgKzY1LDE2IEBAIFRlc3RQYWdl
LnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICByZXR1cm4gdGFibGU7CiAgICAg
fQogCi0gICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uKCkgewotICAgICAg
ICBsZXQgZGF0YVNvdXJjZSA9IGNyZWF0ZURhdGFTb3VyY2UoKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmNyZWF0ZVRhYmxlID0gZnVuY3Rpb24obnVtYmVyT2ZSb3dzKSB7CisgICAgICAgIGxldCBkYXRh
U291cmNlID0gY3JlYXRlRGF0YVNvdXJjZShudW1iZXJPZlJvd3MpOwogICAgICAgICBsZXQgZGVs
ZWdhdGUgPSBuZXcgSW5zcGVjdG9yVGVzdC5UYWJsZURlbGVnYXRlKGRhdGFTb3VyY2UuaXRlbXMp
OwogICAgICAgICByZXR1cm4gY3JlYXRlVGFibGVJbnRlcm5hbChkYXRhU291cmNlLCBkZWxlZ2F0
ZSk7CiAgICAgfTsKIAotICAgIEluc3BlY3RvclRlc3QuY3JlYXRlVGFibGVXaXRoRGVsZWdhdGUg
PSBmdW5jdGlvbihkZWxlZ2F0ZSkgeworICAgIEluc3BlY3RvclRlc3QuY3JlYXRlVGFibGVXaXRo
RGVsZWdhdGUgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgbnVtYmVyT2ZSb3dzKSB7CiAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KGRlbGVnYXRlIGluc3RhbmNlb2YgSW5zcGVjdG9yVGVzdC5UYWJs
ZURlbGVnYXRlKTsKIAotICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNyZWF0ZURhdGFTb3VyY2Uo
KTsKKyAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBjcmVhdGVEYXRhU291cmNlKG51bWJlck9mUm93
cyk7CiAgICAgICAgIGRlbGVnYXRlLml0ZW1zID0gZGF0YVNvdXJjZS5pdGVtczsKICAgICAgICAg
cmV0dXJuIGNyZWF0ZVRhYmxlSW50ZXJuYWwoZGF0YVNvdXJjZSwgZGVsZWdhdGUpOwogICAgIH07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGFibGUvdGFibGUtcmVtb3ZlLXJv
d3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RhYmxlL3RhYmxlLXJlbW92
ZS1yb3dzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzc5NjNjMzM4NmUzYmZkYjAzZTJkZTIw
ZmIwYWUzNmVlZmE2ODgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RhYmxlL3RhYmxlLXJlbW92ZS1yb3dzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgwIEBACitU
ZXN0cyB0aGF0IHJvd3MgY2FuIGJlIHJlbW92ZWQgZnJvbSBUYWJsZSwgYW5kIHRoYXQgdGhlIHNl
bGVjdGlvbiBpcyB1cGRhdGVkIHdoZW4gcmVtb3Zpbmcgc2VsZWN0ZWQgcm93cy4KKworQW4gYXN0
ZXJpeCAoKikgaW5kaWNhdGVzIGEgc2VsZWN0ZWQgcm93OyBhIGh5cGhlbiAoLSkgaW5kaWNhdGVz
IGEgcmVtb3ZlZCByb3cuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBUYWJsZS5SZW1vdmVS
b3dzCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGFibGUuUmVtb3ZlUm93Lk5vbmVTZWxlY3RlZAor
R2l2ZW4gYSBUYWJsZSB3aXRoIHNlbGVjdGVkIHJvd3MgW10sIHJlbW92ZSByb3cgMC4KK1BBU1M6
IFNob3VsZCByZW1vdmUgcm93IDAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUYWJsZS5SZW1v
dmVSb3cuU2VsZWN0ZWQKK0dpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3dzIFswXSwgcmVt
b3ZlIHJvdyAwLgorU2VsZWN0aW9uIGNoYW5nZWQgdG8gW10gYmVmb3JlIHJlbW92aW5nIHJvdyAw
LgorUEFTUzogU2hvdWxkIHJlbW92ZSByb3cgMC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRh
YmxlLlJlbW92ZVNlbGVjdGVkUm93cy5TaW5nbGUuU2VsZWN0Rm9sbG93aW5nCitHaXZlbiBhIFRh
YmxlIHdpdGggc2VsZWN0ZWQgcm93cyBbMF06CisgKiBSb3cgMAorICAgUm93IDEKKyAgIFJvdyAy
CisgICBSb3cgMworU2VsZWN0aW9uIGNoYW5nZWQgYmVmb3JlIHJlbW92aW5nIHJvd3M6CisgLSBS
b3cgMAorICogUm93IDEKKyAgIFJvdyAyCisgICBSb3cgMworUEFTUzogU2hvdWxkIHJlbW92ZSBy
b3dzIFswXS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRhYmxlLlJlbW92ZVNlbGVjdGVkUm93
cy5TaW5nbGUuU2VsZWN0UHJlY2VkaW5nCitHaXZlbiBhIFRhYmxlIHdpdGggc2VsZWN0ZWQgcm93
cyBbM106CisgICBSb3cgMAorICAgUm93IDEKKyAgIFJvdyAyCisgKiBSb3cgMworU2VsZWN0aW9u
IGNoYW5nZWQgYmVmb3JlIHJlbW92aW5nIHJvd3M6CisgICBSb3cgMAorICAgUm93IDEKKyAqIFJv
dyAyCisgLSBSb3cgMworUEFTUzogU2hvdWxkIHJlbW92ZSByb3dzIFszXS4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IFRhYmxlLlJlbW92ZVNlbGVjdGVkUm93cy5NdWx0aXBsZS5TZWxlY3RGb2xs
b3dpbmcKK0dpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3dzIFswLDJdOgorICogUm93IDAK
KyAgIFJvdyAxCisgKiBSb3cgMgorICAgUm93IDMKK1NlbGVjdGlvbiBjaGFuZ2VkIGJlZm9yZSBy
ZW1vdmluZyByb3dzOgorIC0gUm93IDAKKyAgIFJvdyAxCisgLSBSb3cgMgorICogUm93IDMKK1BB
U1M6IFNob3VsZCByZW1vdmUgcm93cyBbMCwyXS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRh
YmxlLlJlbW92ZVNlbGVjdGVkUm93cy5NdWx0aXBsZS5TZWxlY3RIb2xlCitHaXZlbiBhIFRhYmxl
IHdpdGggc2VsZWN0ZWQgcm93cyBbMCwzXToKKyAqIFJvdyAwCisgICBSb3cgMQorICAgUm93IDIK
KyAqIFJvdyAzCitTZWxlY3Rpb24gY2hhbmdlZCBiZWZvcmUgcmVtb3Zpbmcgcm93czoKKyAtIFJv
dyAwCisgKiBSb3cgMQorICAgUm93IDIKKyAtIFJvdyAzCitQQVNTOiBTaG91bGQgcmVtb3ZlIHJv
d3MgWzAsM10uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUYWJsZS5SZW1vdmVTZWxlY3RlZFJv
d3MuTXVsdGlwbGUuU2VsZWN0UHJlY2VkaW5nCitHaXZlbiBhIFRhYmxlIHdpdGggc2VsZWN0ZWQg
cm93cyBbMiwzXToKKyAgIFJvdyAwCisgICBSb3cgMQorICogUm93IDIKKyAqIFJvdyAzCitTZWxl
Y3Rpb24gY2hhbmdlZCBiZWZvcmUgcmVtb3Zpbmcgcm93czoKKyAgIFJvdyAwCisgKiBSb3cgMQor
IC0gUm93IDIKKyAtIFJvdyAzCitQQVNTOiBTaG91bGQgcmVtb3ZlIHJvd3MgWzIsM10uCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RhYmxlL3RhYmxlLXJlbW92ZS1yb3dzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjQ1NzExZWMyZGYyYmZhZTcxZTI3N2Y2OWQ0MTUwMjI2NWZjNmYxMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUt
cm93cy5odG1sCkBAIC0wLDAgKzEsMTkzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGFibGUt
dXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAgICBs
ZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVGFibGUuUmVtb3ZlUm93
cyIpOworCisgICAgZnVuY3Rpb24gbG9nVGFibGUodGFibGUsIHJvd3NUb1JlbW92ZSA9IFtdKSB7
CisgICAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0YWJsZS5udW1iZXJP
ZlJvd3M7ICsrcm93SW5kZXgpIHsKKyAgICAgICAgICAgIGxldCB0eXBlID0gIiAiOworICAgICAg
ICAgICAgaWYgKHJvd3NUb1JlbW92ZS5pbmNsdWRlcyhyb3dJbmRleCkpCisgICAgICAgICAgICAg
ICAgdHlwZSA9ICItIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRhYmxlLnNlbGVjdGVkUm93cy5p
bmNsdWRlcyhyb3dJbmRleCkpCisgICAgICAgICAgICAgICAgdHlwZSA9ICIqIjsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKGAgJHt0eXBlfSBSb3cgJHtyb3dJbmRleH1gKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGNsYXNzIFJlbW92ZVJvd1Rlc3REZWxlZ2F0ZSBleHRlbmRzIElu
c3BlY3RvclRlc3QuVGFibGVEZWxlZ2F0ZQorICAgIHsKKyAgICAgICAgY29uc3RydWN0b3IoKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdXBlcigpOworCisgICAgICAgICAgICB0aGlzLl9yb3dJ
bmRleCA9IE5hTjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1YmxpYworCisgICAgICAgIHRy
aWdnZXJSZW1vdmVSb3codGFibGUsIHJvd0luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChpc05hTih0aGlzLl9yb3dJbmRleCkpOworCisgICAgICAgICAg
ICB0aGlzLl9yb3dJbmRleCA9IHJvd0luZGV4OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhgR2l2ZW4gYSBUYWJsZSB3aXRoIHNlbGVjdGVkIHJvd3MgWyR7dGFibGUuc2VsZWN0ZWRS
b3dzfV0sIHJlbW92ZSByb3cgJHtyb3dJbmRleH0uYCk7CisgICAgICAgICAgICB0YWJsZS5yZW1v
dmVSb3cocm93SW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGFibGUgZGVsZWdhdGUK
KworICAgICAgICB0YWJsZURpZFJlbW92ZVJvd3ModGFibGUsIHJvd0luZGV4ZXMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN1cGVyLnRhYmxlRGlkUmVtb3ZlUm93cyh0YWJsZSwgcm93SW5kZXhl
cyk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHJvd0lu
ZGV4ZXMsIFt0aGlzLl9yb3dJbmRleF0sIGBTaG91bGQgcmVtb3ZlIHJvdyAke3RoaXMuX3Jvd0lu
ZGV4fS5gKTsKKyAgICAgICAgICAgIHRoaXMuX3Jvd0luZGV4ID0gTmFOOworICAgICAgICB9CisK
KyAgICAgICAgdGFibGVTZWxlY3Rpb25EaWRDaGFuZ2UodGFibGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChpc05hTih0aGlzLl9yb3dJbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgU2VsZWN0aW9uIGNoYW5nZWQgdG8g
WyR7dGFibGUuc2VsZWN0ZWRSb3dzfV0gYmVmb3JlIHJlbW92aW5nIHJvdyAke3RoaXMuX3Jvd0lu
ZGV4fS5gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIFJlbW92ZVNlbGVjdGVkUm93
c1Rlc3REZWxlZ2F0ZSBleHRlbmRzIEluc3BlY3RvclRlc3QuVGFibGVEZWxlZ2F0ZQorICAgIHsK
KyAgICAgICAgY29uc3RydWN0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlcigpOwor
CisgICAgICAgICAgICB0aGlzLl9yb3dJbmRleGVzID0gbnVsbDsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFB1YmxpYworCisgICAgICAgIHRyaWdnZXJSZW1vdmVTZWxlY3RlZFJvd3ModGFibGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCF0aGlzLl9yb3dJ
bmRleGVzKTsKKworICAgICAgICAgICAgdGhpcy5fcm93SW5kZXhlcyA9IHRhYmxlLnNlbGVjdGVk
Um93czsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYEdpdmVuIGEgVGFibGUgd2l0
aCBzZWxlY3RlZCByb3dzIFske3RoaXMuX3Jvd0luZGV4ZXN9XTpgKTsKKyAgICAgICAgICAgIGxv
Z1RhYmxlKHRhYmxlKTsKKworICAgICAgICAgICAgdGFibGUucmVtb3ZlU2VsZWN0ZWRSb3dzKCk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUYWJsZSBkZWxlZ2F0ZQorCisgICAgICAgIHRhYmxl
RGlkUmVtb3ZlUm93cyh0YWJsZSwgcm93SW5kZXhlcykKKyAgICAgICAgeworICAgICAgICAgICAg
c3VwZXIudGFibGVEaWRSZW1vdmVSb3dzKHRhYmxlLCByb3dJbmRleGVzKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwocm93SW5kZXhlcywgdGhpcy5fcm93
SW5kZXhlcywgYFNob3VsZCByZW1vdmUgcm93cyBbJHt0aGlzLl9yb3dJbmRleGVzfV0uYCk7Cisg
ICAgICAgICAgICB0aGlzLl9yb3dJbmRleGVzID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAg
IHRhYmxlU2VsZWN0aW9uRGlkQ2hhbmdlKHRhYmxlKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIXRoaXMuX3Jvd0luZGV4ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgU2VsZWN0aW9uIGNoYW5nZWQgYmVmb3JlIHJlbW92aW5n
IHJvd3M6YCk7CisgICAgICAgICAgICBsb2dUYWJsZSh0YWJsZSwgdGhpcy5fcm93SW5kZXhlcyk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBudW1iZXJPZlJvd3MgPSA0OworICAgIGNv
bnN0IGxhc3RSb3dJbmRleCA9IG51bWJlck9mUm93cyAtIDE7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUYWJsZS5SZW1vdmVSb3cuTm9uZVNlbGVjdGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUgYSByb3cgZnJvbSBhIHRhYmxlIHdpdGggbm8gc2Vs
ZWN0ZWQgcm93cy4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRlc3REZWxl
Z2F0ZSA9IG5ldyBSZW1vdmVSb3dUZXN0RGVsZWdhdGU7CisgICAgICAgICAgICBsZXQgdGFibGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlV2l0aERlbGVnYXRlKHRlc3REZWxlZ2F0ZSwgbnVt
YmVyT2ZSb3dzKTsKKworICAgICAgICAgICAgdGVzdERlbGVnYXRlLnRyaWdnZXJSZW1vdmVSb3co
dGFibGUsIDApOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVGFibGUuUmVtb3Zl
Um93LlNlbGVjdGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUgdGhlIG9ubHkgc2Vs
ZWN0ZWQgdGFibGUgcm93LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGVz
dERlbGVnYXRlID0gbmV3IFJlbW92ZVJvd1Rlc3REZWxlZ2F0ZTsKKyAgICAgICAgICAgIGxldCB0
YWJsZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlVGFibGVXaXRoRGVsZWdhdGUodGVzdERlbGVnYXRl
LCBudW1iZXJPZlJvd3MpOworCisgICAgICAgICAgICB0YWJsZS5zZWxlY3RSb3coMCk7CisgICAg
ICAgICAgICB0ZXN0RGVsZWdhdGUudHJpZ2dlclJlbW92ZVJvdyh0YWJsZSwgMCk7CisKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBh
ZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHJvd0luZGV4ZXN9KSB7CisgICAgICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgdGVzdERlbGVnYXRlID0gbmV3IFJl
bW92ZVNlbGVjdGVkUm93c1Rlc3REZWxlZ2F0ZTsKKyAgICAgICAgICAgICAgICBsZXQgdGFibGUg
PSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlV2l0aERlbGVnYXRlKHRlc3REZWxlZ2F0ZSwgbnVt
YmVyT2ZSb3dzKTsKKyAgICAgICAgICAgICAgICB0YWJsZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlv
biA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCByb3dJbmRleCBvZiByb3dJbmRl
eGVzKQorICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZWxlY3RSb3cocm93SW5kZXgsIHRydWUp
OworCisgICAgICAgICAgICAgICAgdGVzdERlbGVnYXRlLnRyaWdnZXJSZW1vdmVTZWxlY3RlZFJv
d3ModGFibGUpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IlRhYmxlLlJlbW92ZVNlbGVjdGVkUm93cy5TaW5nbGUuU2VsZWN0Rm9sbG93aW5nIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJSZW1vdmUgdGhlIHNlbGVjdGVkIHJvdywgY2F1c2luZyB0aGUgZm9s
bG93aW5nIHJvdyB0byBiZSBzZWxlY3RlZC4iLAorICAgICAgICByb3dJbmRleGVzOiBbMF0sCisg
ICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUYWJsZS5SZW1vdmVT
ZWxlY3RlZFJvd3MuU2luZ2xlLlNlbGVjdFByZWNlZGluZyIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiUmVtb3ZlIHRoZSBzZWxlY3RlZCByb3csIGNhdXNpbmcgdGhlIHByZWNlZGluZyByb3cgdG8g
YmUgc2VsZWN0ZWQuIiwKKyAgICAgICAgcm93SW5kZXhlczogW2xhc3RSb3dJbmRleF0sCisgICAg
fSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUYWJsZS5SZW1vdmVTZWxl
Y3RlZFJvd3MuTXVsdGlwbGUuU2VsZWN0Rm9sbG93aW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJSZW1vdmUgc2VsZWN0ZWQgcm93cywgY2F1c2luZyB0aGUgcm93IGZvbGxvd2luZyB0aGUgc2Vs
ZWN0aW9uIHRvIGJlIHNlbGVjdGVkLiIsCisgICAgICAgIHJvd0luZGV4ZXM6IFswLCBsYXN0Um93
SW5kZXggLSAxXSwKKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IlRhYmxlLlJlbW92ZVNlbGVjdGVkUm93cy5NdWx0aXBsZS5TZWxlY3RIb2xlIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJSZW1vdmUgc2VsZWN0ZWQgcm93cywgY2F1c2luZyB0aGUgZmlyc3QgZGVz
ZWxlY3RlZCByb3cgaW5zaWRlIHRoZSBzZWxlY3Rpb24gdG8gYmUgc2VsZWN0ZWQuIiwKKyAgICAg
ICAgcm93SW5kZXhlczogWzAsIGxhc3RSb3dJbmRleF0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJUYWJsZS5SZW1vdmVTZWxlY3RlZFJvd3MuTXVsdGlwbGUu
U2VsZWN0UHJlY2VkaW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUgc2VsZWN0ZWQg
cm93cywgY2F1c2luZyB0aGUgcm93IHByZWNlZGluZyB0aGUgc2VsZWN0aW9uIHRvIGJlIHNlbGVj
dGVkLiIsCisgICAgICAgIHJvd0luZGV4ZXM6IFtsYXN0Um93SW5kZXggLSAxLCBsYXN0Um93SW5k
ZXhdLAorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0
cyB0aGF0IHJvd3MgY2FuIGJlIHJlbW92ZWQgZnJvbSBUYWJsZSwgYW5kIHRoYXQgdGhlIHNlbGVj
dGlvbiBpcyB1cGRhdGVkIHdoZW4gcmVtb3Zpbmcgc2VsZWN0ZWQgcm93cy48L3A+CisgICAgPHA+
QW4gYXN0ZXJpeCAoKikgaW5kaWNhdGVzIGEgc2VsZWN0ZWQgcm93OyBhIGh5cGhlbiAoLSkgaW5k
aWNhdGVzIGEgcmVtb3ZlZCByb3cuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC1leHBlY3RlZC50eHQK
aW5kZXggYzMzNjNjZjdjYTgzZGJlMDFjMWE1YmIzOWY0MTU0ZTE5ZDMyM2E3YS4uZjhiMjk0ZWYx
MDJiZGNlZGU5MTQxM2JlMDQ3MmEyNThmOWY0MGY0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1zZXQtZXhwZWN0ZWQudHh0CkBAIC02OCwz
ICs2OCw3IEBAIFBBU1M6IEluZGV4IGxlc3MgdGhhbiAxIHNob3VsZCBiZSBOYU4uCiBQQVNTOiBJ
bmRleCBsZXNzIHRoYW4gMiBzaG91bGQgYmUgMS4KIFBBU1M6IEluZGV4IGxlc3MgdGhhbiAzIHNo
b3VsZCBiZSAyLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSW5kZXhTZXQucHJvdG90eXBlLmNs
b25lCitQQVNTOiBDbG9uZWQgYW5kIG9yaWdpbmFsIHNob3VsZCBiZSBkaWZmZXJlbnQgb2JqZWN0
cy4KK1BBU1M6IENsb25lZCBhbmQgb3JpZ2luYWwgc2hvdWxkIGhhdmUgdGhlIHNhbWUgdmFsdWVz
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1z
ZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC5odG1s
CmluZGV4IDA1YTNkYjk3M2JhZTAwODE5YzQzNTgzYjdhY2E0OThhY2VhYjdiODEuLjNlMzlhMjVl
YmYwZTE4MTg0OTk1Y2I1OGZiOGQwY2FiNDYyOTUzYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC5odG1sCkBAIC0xOTQsNiArMTk0LDE4IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJJbmRleFNldC5wcm90b3R5cGUuY2xvbmUiLAorICAgICAgICB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9yaWdpbmFsID0gbmV3IFdJLkluZGV4U2V0KFsxLCAy
LCAzXSk7CisgICAgICAgICAgICBsZXQgY2xvbmVkID0gb3JpZ2luYWwuY2xvbmUoKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwoY2xvbmVkLCBvcmlnaW5hbCwgIkNs
b25lZCBhbmQgb3JpZ2luYWwgc2hvdWxkIGJlIGRpZmZlcmVudCBvYmplY3RzLiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwoQXJyYXkuZnJvbShjbG9uZWQp
LCBBcnJheS5mcm9tKG9yaWdpbmFsKSwgIkNsb25lZCBhbmQgb3JpZ2luYWwgc2hvdWxkIGhhdmUg
dGhlIHNhbWUgdmFsdWVzLiIpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3Nj
cmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353248</attachid>
            <date>2018-10-27 15:52:06 -0700</date>
            <delta_ts>2018-10-27 16:30:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189803-20181027155204.patch</filename>
            <type>text/plain</type>
            <size>24718</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
ZTI3Y2I0NjAwM2ZlMzcyMzQ2MTI0YmU0MDY3ZjZjN2E3YWI2ZjRjLi4zZDUyZmNkYmJmYTc5ZGYx
ZjMxNTkxNmVjN2UyZWM3ODg3ZDRjMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOC0xMC0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUgc2hvdWxkIHN1cHBvcnQgZGVsZXRpbmcg
cm93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
ODAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDY1NTcwOT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkIG1ldGhvZHMgZm9yIHJlbW92aW5nIHJv
d3MgZnJvbSBhIFRhYmxlIHdpdGhvdXQgcmVsb2FkaW5nIHRoZSBkYXRhCisgICAgICAgIHNvdXJj
ZS4gVGhpcyBwYXRjaCBhZGRzIFRhYmxlLnByb3RvdHlwZS5yZW1vdmVSb3cgZm9yIHJlbW92aW5n
IGEgc2luZ2xlCisgICAgICAgIHJvdywgYW5kIFRhYmxlLnByb3RvdHlwZS5yZW1vdmVTZWxlY3Rl
ZFJvd3MgZm9yIHJlbW92aW5nIHRoZSBlbnRpcmUgc2VsZWN0aW9uLgorICAgICAgICBUaGUgbGF0
dGVyIGFsc28gYXR0ZW1wdHMgdG8gc2VsZWN0IGEgbmV3IHJvdywgaWYgcG9zc2libGUsIGJlZm9y
ZSByZW1vdmluZworICAgICAgICB0aGUgc2VsZWN0aW9uLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9CYXNlL0luZGV4U2V0LmpzOgorICAgICAgICAoV0kuSW5kZXhTZXQucHJvdG90eXBlLmNv
cHkpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qczoKKyAgICAgICAg
KFdJLlRhYmxlKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5nZXQgbnVtYmVyT2ZSb3dz
KToKKyAgICAgICAgQ2FjaGUgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZSBkYXRhIHNv
dXJjZS4gSW52YWxpZGF0ZSBjYWNoZWQKKyAgICAgICAgdmFsdWUgd2hlbmV2ZXIgdGFibGUgZGF0
YSBpcyByZWxvYWRlZC4gUmVtb3Zpbmcgcm93cyBpbW1lZGlhdGVseSB1cGRhdGVzCisgICAgICAg
IGNhY2hlZCB2YWx1ZSwgd2l0aG91dCBpbmN1cnJpbmcgYSBwb3RlbnRpYWxseSBleHBlbnNpdmUg
cmVsb2FkLgorCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUucmVsb2FkRGF0YSk6CisgICAg
ICAgIChXSS5UYWJsZS5wcm90b3R5cGUuc2VsZWN0Um93KToKKyAgICAgICAgKFdJLlRhYmxlLnBy
b3RvdHlwZS5kZXNlbGVjdFJvdyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUucmVtb3Zl
Um93KToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5yZW1vdmVTZWxlY3RlZFJvd3MpOgor
ICAgICAgICBSZW1vdmUgdGhlIHNlbGVjdGVkIHJvd3MgYW5kIHNlbGVjdCBhIG5ldyByb3csIGlm
IHBvc3NpYmxlLgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl91cGRhdGVWaXNpYmxlUm93
cyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX2hhbmRsZUtleURvd24pOgorICAgICAg
ICAoV0kuVGFibGUucHJvdG90eXBlLl9kZXNlbGVjdEFsbEFuZFNlbGVjdCk6CisgICAgICAgIERy
aXZlLWJ5IGZpeDogc2hvdWxkIHdvcmsgd2hlbiBgcm93VG9TZWxlY3RgIGlzbid0IGFscmVhZHkg
c2VsZWN0ZWQuCisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX3JlbW92ZVJvd3MpOgorICAg
ICAgICBSZW1vdmUgcm93cyBhbmQgYWRqdXN0IHRoZSBpbmRleGVzIG9mIHJvd3MgdGhhdCBhcmUg
c2hpZnRlZCB1cCBhcyBhIHJlc3VsdAorICAgICAgICBvZiBwcmVjZWRpbmcgcm93cyBiZWluZyBy
ZW1vdmVkLgorCiAyMDE4LTEwLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaW1wbGlmeSBzb21lIGVkaXRpbmcgY29kZSBjaGVj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
SW5kZXhTZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0lu
ZGV4U2V0LmpzCmluZGV4IGY0OGNkNzEyODYyYmExODZkMmE5NmQ1NDFkYjFjNTRmYzFjNzJlYTQu
LmM4Zjg0NjFhMzllMjlkN2FiZGI3NTYwODE0ZGUyNWYxYjFlMjA3ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvSW5kZXhTZXQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9JbmRleFNldC5qcwpAQCAt
OTYsNiArOTYsMTMgQEAgV0kuSW5kZXhTZXQgPSBjbGFzcyBJbmRleFNldAogICAgICAgICB0aGlz
Ll9pbmRleGVzID0gW107CiAgICAgfQogCisgICAgY29weSgpCisgICAgeworICAgICAgICBsZXQg
aW5kZXhTZXQgPSBuZXcgV0kuSW5kZXhTZXQ7CisgICAgICAgIGluZGV4U2V0Ll9pbmRleGVzID0g
dGhpcy5faW5kZXhlcy5zbGljZSgpOworICAgICAgICByZXR1cm4gaW5kZXhTZXQ7CisgICAgfQor
CiAgICAgaW5kZXhHcmVhdGVyVGhhbih2YWx1ZSkKICAgICB7CiAgICAgICAgIGNvbnN0IGZvbGxv
d2luZyA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UYWJsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RhYmxlLmpzCmluZGV4IDgyYjNjMzE3MTE1OGIxYjZiNDYwZDFiNjUwZmJhMDUyYzAz
NTYxMWQuLjUxMjA4ZDhiMWVkYzU4MTBlM2UyZGUyZDY4NDdhZTliYzUxMjc4MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCkBA
IC03Niw2ICs3Niw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAg
ICAgICAgIHRoaXMuX3Jlc2l6ZXJzRWxlbWVudC5jbGFzc05hbWUgPSAicmVzaXplcnMiOwogCiAg
ICAgICAgIHRoaXMuX2NhY2hlZFJvd3MgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9jYWNoZWRO
dW1iZXJPZlJvd3MgPSBOYU47CiAKICAgICAgICAgdGhpcy5fY29sdW1uU3BlY3MgPSBuZXcgTWFw
OwogICAgICAgICB0aGlzLl9jb2x1bW5PcmRlciA9IFtdOwpAQCAtMTMyLDYgKzEzMywxNCBAQCBX
SS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogCiAgICAgZ2V0IHNjcm9sbENv
bnRhaW5lcigpIHsgcmV0dXJuIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQ7IH0KIAorICAg
IGdldCBudW1iZXJPZlJvd3MoKQorICAgIHsKKyAgICAgICAgaWYgKGlzTmFOKHRoaXMuX2NhY2hl
ZE51bWJlck9mUm93cykpCisgICAgICAgICAgICB0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3MgPSB0
aGlzLl9kYXRhU291cmNlLnRhYmxlTnVtYmVyT2ZSb3dzKHRoaXMpOworCisgICAgICAgIHJldHVy
biB0aGlzLl9jYWNoZWROdW1iZXJPZlJvd3M7CisgICAgfQorCiAgICAgZ2V0IHNvcnRPcmRlcigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc29ydE9yZGVyOwpAQCAtMjQxLDYgKzI1MCw3
IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMu
X3NlbGVjdGVkUm93SW5kZXggPSBOYU47CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5jbGVh
cigpOwogCisgICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyA9IE5hTjsKICAgICAgICAg
dGhpcy5fcHJldmlvdXNSZXZlYWxlZFJvd0NvdW50ID0gTmFOOwogICAgICAgICB0aGlzLm5lZWRz
TGF5b3V0KCk7CiAgICAgfQpAQCAtMzA5LDYgKzMxOSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFi
bGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgc2VsZWN0Um93KHJvd0luZGV4LCBleHRlbmRTZWxlY3Rp
b24gPSBmYWxzZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFleHRlbmRTZWxlY3Rp
b24gfHwgdGhpcy5fYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24sICJDYW5ub3QgZXh0ZW5kIHNlbGVj
dGlvbiB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQocm93SW5kZXggPj0gMCAmJiByb3dJbmRleCA8IHRoaXMubnVtYmVyT2ZSb3dzKTsK
IAogICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxlY3RlZChyb3dJbmRleCkpIHsKICAgICAgICAg
ICAgIGlmICghZXh0ZW5kU2VsZWN0aW9uKQpAQCAtMzMzLDYgKzM0NCw4IEBAIFdJLlRhYmxlID0g
Y2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBkZXNlbGVjdFJvdyhyb3dJbmRleCkK
ICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJvd0luZGV4ID49IDAgJiYgcm93SW5kZXgg
PCB0aGlzLm51bWJlck9mUm93cyk7CisKICAgICAgICAgaWYgKCF0aGlzLl9pc1Jvd1NlbGVjdGVk
KHJvd0luZGV4KSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzczLDYgKzM4Niw0NyBAQCBX
SS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9kZXNl
bGVjdEFsbEFuZFNlbGVjdChyb3dJbmRleCk7CiAgICAgfQogCisgICAgcmVtb3ZlUm93KHJvd0lu
ZGV4KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocm93SW5kZXggPj0gMCAmJiByb3dJ
bmRleCA8IHRoaXMubnVtYmVyT2ZSb3dzKTsKKworICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxl
Y3RlZChyb3dJbmRleCkpCisgICAgICAgICAgICB0aGlzLmRlc2VsZWN0Um93KHJvd0luZGV4KTsK
KworICAgICAgICB0aGlzLl9yZW1vdmVSb3dzKG5ldyBXSS5JbmRleFNldChbcm93SW5kZXhdKSk7
CisgICAgfQorCisgICAgcmVtb3ZlU2VsZWN0ZWRSb3dzKCkKKyAgICB7CisgICAgICAgIGxldCBu
dW1iZXJPZlNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93cy5zaXplOworICAgICAgICBp
ZiAoIW51bWJlck9mU2VsZWN0ZWRSb3dzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIFRyeSBzZWxlY3RpbmcgdGhlIHJvdyBmb2xsb3dpbmcgdGhlIHNlbGVjdGlvbi4KKyAgICAg
ICAgbGV0IGxhc3RTZWxlY3RlZFJvdyA9IHRoaXMuX3NlbGVjdGVkUm93cy5sYXN0SW5kZXg7Cisg
ICAgICAgIGxldCByb3dUb1NlbGVjdCA9IGxhc3RTZWxlY3RlZFJvdyArIDE7CisgICAgICAgIGlm
IChyb3dUb1NlbGVjdCA9PT0gdGhpcy5udW1iZXJPZlJvd3MpIHsKKyAgICAgICAgICAgIC8vIElm
IG5vIHJvdyBleGlzdHMgYWZ0ZXIgdGhlIGxhc3Qgc2VsZWN0ZWQgcm93LCB0cnkgc2VsZWN0aW5n
IGEKKyAgICAgICAgICAgIC8vIGRlc2VsZWN0ZWQgcm93IChob2xlKSB3aXRoaW4gdGhlIHNlbGVj
dGlvbi4KKyAgICAgICAgICAgIGxldCBmaXJzdFNlbGVjdGVkUm93ID0gdGhpcy5fc2VsZWN0ZWRS
b3dzLmZpcnN0SW5kZXg7CisgICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkUm93IC0gZmlyc3RT
ZWxlY3RlZFJvdyA+IG51bWJlck9mU2VsZWN0ZWRSb3dzKSB7CisgICAgICAgICAgICAgICAgcm93
VG9TZWxlY3QgPSB0aGlzLl9zZWxlY3RlZFJvd3MuZmlyc3RJbmRleCArIDE7CisgICAgICAgICAg
ICAgICAgd2hpbGUgKHRoaXMuX3NlbGVjdGVkUm93cy5oYXMocm93VG9TZWxlY3QpKQorICAgICAg
ICAgICAgICAgICAgICByb3dUb1NlbGVjdCsrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGNvbnRhaW5zIG5vIGhvbGVzLCB0cnkgc2Vs
ZWN0aW5nIHRoZSByb3cKKyAgICAgICAgICAgICAgICAvLyBwcmVjZWRpbmcgdGhlIHNlbGVjdGlv
bi4KKyAgICAgICAgICAgICAgICByb3dUb1NlbGVjdCA9IGZpcnN0U2VsZWN0ZWRSb3cgPiAwID8g
Zmlyc3RTZWxlY3RlZFJvdyAtIDEgOiBOYU47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBDaGFuZ2UgdGhlIHNlbGVjdGlvbiBiZWZvcmUgcmVtb3Zpbmcgcm93cy4gVGhp
cyBtYXRjaGVzIHRoZSBiZWhhdmlvcgorICAgICAgICAvLyBvZiBtYWNPUyBGaW5kZXIgKGluIGxp
c3QgYW5kIGNvbHVtbiBtb2Rlcykgd2hlbiByZW1vdmluZyBzZWxlY3RlZCBpdGVtcy4KKyAgICAg
ICAgbGV0IG9sZFNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93cy5jb3B5KCk7CisgICAg
ICAgIHRoaXMuX2Rlc2VsZWN0QWxsQW5kU2VsZWN0KHJvd1RvU2VsZWN0KTsKKyAgICAgICAgdGhp
cy5fcmVtb3ZlUm93cyhvbGRTZWxlY3RlZFJvd3MpOworICAgIH0KKwogICAgIGNvbHVtbldpdGhJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1u
U3BlY3MuZ2V0KGlkZW50aWZpZXIpOwpAQCAtNzkwLDcgKzg0NCw3IEBAIFdJLlRhYmxlID0gY2xh
c3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IHRo
aXMuX2NhY2hlZFdpZHRoOwogICAgICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gdGhpcy5fY2Fj
aGVkSGVpZ2h0OwogCi0gICAgICAgIGxldCBudW1iZXJPZlJvd3MgPSB0aGlzLl9kYXRhU291cmNl
LnRhYmxlTnVtYmVyT2ZSb3dzKHRoaXMpOworICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhp
cy5udW1iZXJPZlJvd3M7CiAgICAgICAgIHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyA9IG51bWJl
ck9mUm93czsKIAogICAgICAgICBsZXQgY29udGVudEhlaWdodCA9IG51bWJlck9mUm93cyAqIHRo
aXMuX3Jvd0hlaWdodDsKQEAgLTEwMTEsNyArMTA2NSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFi
bGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChiZWxvd1RvcFRocmVzaG9sZCAmJiBhYm92
ZUJvdHRvbVRocmVzaG9sZCAmJiAhaXNOYU4odGhpcy5fcHJldmlvdXNSZXZlYWxlZFJvd0NvdW50
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgbnVtYmVyT2ZSb3dzID0gdGhp
cy5fZGF0YVNvdXJjZS50YWJsZU51bWJlck9mUm93cyh0aGlzKTsKKyAgICAgICAgbGV0IG51bWJl
ck9mUm93cyA9IHRoaXMubnVtYmVyT2ZSb3dzOwogICAgICAgICB0aGlzLl9wcmV2aW91c1JldmVh
bGVkUm93Q291bnQgPSBudW1iZXJPZlJvd3M7CiAKICAgICAgICAgLy8gU2Nyb2xsIGJhY2sgdXAg
aWYgdGhlIG51bWJlciBvZiByb3dzIHdhcyByZWR1Y2VkIHN1Y2ggdGhhdCB0aGUgZXhpc3RpbmcK
QEAgLTEyMjIsNiArMTI3Niw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50
LmN0cmxLZXkpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbGV0IG51bWJlck9mUm93
cyA9IHRoaXMubnVtYmVyT2ZSb3dzOwogICAgICAgICBsZXQgcm93VG9TZWxlY3QgPSBOYU47CiAK
ICAgICAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIpIHsKQEAgLTEzNjYsOCAr
MTQyMSw2IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgZm9yIChsZXQgc2VsZWN0ZWRSb3dJbmRleCBvZiB0aGlz
Ll9zZWxlY3RlZFJvd3MpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3RlZFJvd0luZGV4ID09PSBy
b3dJbmRleCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxldCBvbGRT
ZWxlY3RlZFJvdyA9IHRoaXMuX2NhY2hlZFJvd3MuZ2V0KHNlbGVjdGVkUm93SW5kZXgpOwogICAg
ICAgICAgICAgaWYgKG9sZFNlbGVjdGVkUm93KQogICAgICAgICAgICAgICAgIG9sZFNlbGVjdGVk
Um93LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CkBAIC0xMzc2LDEyICsxNDI5LDcwIEBA
IFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkUm93SW5kZXggPSByb3dJbmRleDsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLmNs
ZWFyKCk7CiAKLSAgICAgICAgaWYgKCFpc05hTihyb3dJbmRleCkpCisgICAgICAgIGlmICghaXNO
YU4ocm93SW5kZXgpKSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuYWRkKHJvd0lu
ZGV4KTsKKyAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZFJvdyA9IHRoaXMuX2NhY2hlZFJvd3Mu
Z2V0KHJvd0luZGV4KTsKKyAgICAgICAgICAgIGlmIChuZXdTZWxlY3RlZFJvdykKKyAgICAgICAg
ICAgICAgICBuZXdTZWxlY3RlZFJvdy5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5fbm90aWZ5U2VsZWN0aW9uRGlkQ2hhbmdlKCk7CiAgICAgfQog
CisgICAgX3JlbW92ZVJvd3Mocm93SW5kZXhlcykKKyAgICB7CisgICAgICAgIGxldCByZW1vdmVk
ID0gMDsKKworICAgICAgICBsZXQgYWRqdXN0Um93QXRJbmRleCA9IChpbmRleCkgPT4geworICAg
ICAgICAgICAgbGV0IG5ld0luZGV4ID0gaW5kZXggLSByZW1vdmVkOworICAgICAgICAgICAgbGV0
IHJvdyA9IHRoaXMuX2NhY2hlZFJvd3MuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChyb3cp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRSb3dzLmRlbGV0ZShyb3cuX19pbmRleCk7
CisgICAgICAgICAgICAgICAgcm93Ll9faW5kZXggPSBuZXdJbmRleDsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9jYWNoZWRSb3dzLnNldChuZXdJbmRleCwgcm93KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHRoaXMuX2lzUm93U2VsZWN0ZWQoaW5kZXgpKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLmRlbGV0ZShpbmRleCk7CisgICAgICAgICAgICAgICAg
dGhpcy5fc2VsZWN0ZWRSb3dzLmFkZChuZXdJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKHRo
aXMuX3NlbGVjdGVkUm93SW5kZXggPT09IGluZGV4KQorICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9zZWxlY3RlZFJvd0luZGV4ID0gbmV3SW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgaWYgKHJvd0luZGV4ZXMuaGFzKHRoaXMuX3NlbGVjdGVkUm93SW5kZXgpKQor
ICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dJbmRleCA9IE5hTjsKKworICAgICAgICBmb3Ig
KGxldCBpbmRleCA9IHJvd0luZGV4ZXMuZmlyc3RJbmRleDsgaW5kZXggPD0gcm93SW5kZXhlcy5s
YXN0SW5kZXg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChyb3dJbmRleGVzLmhhcyhpbmRl
eCkpIHsKKyAgICAgICAgICAgICAgICBsZXQgcm93ID0gdGhpcy5fY2FjaGVkUm93cy5nZXQoaW5k
ZXgpOworICAgICAgICAgICAgICAgIGlmIChyb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fY2FjaGVkUm93cy5kZWxldGUoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICByb3cucmVt
b3ZlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlbW92ZWQrKzsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KHJlbW92ZWQpCisgICAgICAgICAgICAgICAgYWRqdXN0Um93QXRJbmRleChpbmRleCk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIXJlbW92ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZm9yIChsZXQgaW5kZXggPSByb3dJbmRleGVzLmxhc3RJbmRleCArIDE7IGluZGV4IDwg
dGhpcy5fY2FjaGVkTnVtYmVyT2ZSb3dzOyArK2luZGV4KQorICAgICAgICAgICAgYWRqdXN0Um93
QXRJbmRleChpbmRleCk7CisKKyAgICAgICAgdGhpcy5fY2FjaGVkTnVtYmVyT2ZSb3dzIC09IHJl
bW92ZWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NhY2hlZE51bWJlck9mUm93cyA+
PSAwKTsKKworICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUudGFibGVEaWRSZW1vdmVSb3dzKSB7
CisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS50YWJsZURpZFJlbW92ZVJvd3ModGhpcywgQXJy
YXkuZnJvbShyb3dJbmRleGVzKSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9j
YWNoZWROdW1iZXJPZlJvd3MgPT09IHRoaXMuX2RhdGFTb3VyY2UudGFibGVOdW1iZXJPZlJvd3Mo
dGhpcyksICJUYWJsZSBkYXRhIHNvdXJjZSBzaG91bGQgdXBkYXRlIGFmdGVyIHJlbW92aW5nIHJv
d3MuIik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBfaXNSb3dTZWxlY3RlZChyb3dJbmRleCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3MuaGFzKHJvd0luZGV4KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjU4MGQ5NDkwMTFmNDY0MTNiZGM2M2Y4NDg5NDc2MjA3MjQwNTRjLi5iYTYyYjgw
MzJiNzAyNmM5MTZhMjczMDkxNDA3Yzc2NGI2YjMxNGY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTgtMTAtMjcgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFRhYmxlIHNob3VsZCBzdXBwb3J0IGRlbGV0aW5nIHJvd3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTgwMworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDQ2NTU3MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4g
Um91c3NvLgorCisgICAgICAgICogaW5zcGVjdG9yL3RhYmxlL3Jlc291cmNlcy90YWJsZS11dGls
aXRpZXMuanM6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3Rv
clRlc3QuVGFibGVEZWxlZ2F0ZS5wcm90b3R5cGUudGFibGVEaWRSZW1vdmVSb3dzKToKKyAgICAg
ICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuY3JlYXRlRGF0YVNvdXJjZSk6CisgICAg
ICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuY3JlYXRlVGFi
bGUpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0
LmNyZWF0ZVRhYmxlV2l0aERlbGVnYXRlKToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5p
dGlhbGl6ZXIpOgorICAgICAgICBVcGRhdGUgdGFibGUgdGVzdCB1dGlsaXRpZXMgdG8ga2VlcCBU
YWJsZURhdGFTb3VyY2UgYmFja2luZyBhcnJheSBpbgorICAgICAgICBzeW5jIHdoZW4gcm93cyBh
cmUgcmVtb3ZlZC4gQWxzbyBhbGxvdyB0aGUgbnVtYmVyIG9mIHRhYmxlIHJvd3MgdG8gYmUKKyAg
ICAgICAgc3BlY2lmaWVkIHdoZW4gY3JlYXRpbmcgYSB0YWJsZSBmb3IgdGVzdGluZy4KKworICAg
ICAgICAqIGluc3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgQWRkIHRlc3RzIGZvciBuZXcgVGFibGUgbWV0aG9kcyBgcmVtb3ZlUm93
KHJvd0luZGV4KWAgYW5kIGByZW1vdmVTZWxlY3RlZFJvd3MoKWAuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1zZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3Bl
Y3Rvci91bml0LXRlc3RzL2luZGV4LXNldC5odG1sOgorICAgICAgICBBZGQgdGVzdHMgZm9yIG5l
dyBJbmRleFNldCBtZXRob2QgYGNvcHkoKWAuCisKIDIwMTgtMTAtMjYgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMzc0NzkgYW5kIHIyMzc0ODQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGFibGUvcmVzb3VyY2VzL3RhYmxlLXV0aWxpdGllcy5qcyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90YWJsZS9yZXNvdXJjZXMvdGFibGUtdXRpbGl0aWVzLmpzCmluZGV4IGMwZDk2ZDllYmFl
NWNjN2Q3MGM3Yjk0ZTgyYmIwMTI2YTdjODE0YjEuLjE4MzUzM2ZkNTNkMDZkZTA1YzRjY2U1MTFl
NDEzMWJhYTI3YTQ0OWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90YWJsZS9y
ZXNvdXJjZXMvdGFibGUtdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
YWJsZS9yZXNvdXJjZXMvdGFibGUtdXRpbGl0aWVzLmpzCkBAIC0yMSw2ICsyMSwxMyBAQCBUZXN0
UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAgICAgIHRoaXMuaXRlbXMg
PSBpdGVtcyB8fCBbXTsKICAgICAgICAgfQogCisgICAgICAgIHRhYmxlRGlkUmVtb3ZlUm93cyh0
YWJsZSwgcm93SW5kZXhlcykKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUHJldmVudCBkYXRh
IHNvdXJjZSBmcm9tIGdldHRpbmcgb3V0IG9mIHN5bmMuCisgICAgICAgICAgICBmb3IgKGxldCBp
bmRleCA9IHJvd0luZGV4ZXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgLS1pbmRleCkKKyAgICAg
ICAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7CisgICAgICAgIH0KKwogICAg
ICAgICB0YWJsZVNlbGVjdGlvbkRpZENoYW5nZSh0YWJsZSkKICAgICAgICAgewogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJUYWJsZSBzZWxlY3Rpb24gY2hhbmdlZC4iKTsKQEAgLTM2
LDkgKzQzLDkgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgICAg
IH0KICAgICB9OwogCi0gICAgZnVuY3Rpb24gY3JlYXRlRGF0YVNvdXJjZSgpIHsKKyAgICBmdW5j
dGlvbiBjcmVhdGVEYXRhU291cmNlKG51bWJlck9mUm93cyA9IDEwKSB7CiAgICAgICAgIGxldCBp
dGVtcyA9IFtdOwotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZSb3dzOyArK2kpCiAgICAgICAgICAgICBpdGVt
cy5wdXNoKHtpbmRleDogaSwgbmFtZTogYFJvdyAke2l9YH0pOwogCiAgICAgICAgIHJldHVybiBu
ZXcgSW5zcGVjdG9yVGVzdC5UYWJsZURhdGFTb3VyY2UoaXRlbXMpOwpAQCAtNTgsMTYgKzY1LDE2
IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICByZXR1cm4g
dGFibGU7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9u
KCkgewotICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNyZWF0ZURhdGFTb3VyY2UoKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlID0gZnVuY3Rpb24obnVtYmVyT2ZSb3dzKSB7CisgICAg
ICAgIGxldCBkYXRhU291cmNlID0gY3JlYXRlRGF0YVNvdXJjZShudW1iZXJPZlJvd3MpOwogICAg
ICAgICBsZXQgZGVsZWdhdGUgPSBuZXcgSW5zcGVjdG9yVGVzdC5UYWJsZURlbGVnYXRlKGRhdGFT
b3VyY2UuaXRlbXMpOwogICAgICAgICByZXR1cm4gY3JlYXRlVGFibGVJbnRlcm5hbChkYXRhU291
cmNlLCBkZWxlZ2F0ZSk7CiAgICAgfTsKIAotICAgIEluc3BlY3RvclRlc3QuY3JlYXRlVGFibGVX
aXRoRGVsZWdhdGUgPSBmdW5jdGlvbihkZWxlZ2F0ZSkgeworICAgIEluc3BlY3RvclRlc3QuY3Jl
YXRlVGFibGVXaXRoRGVsZWdhdGUgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgbnVtYmVyT2ZSb3dzKSB7
CiAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGRlbGVnYXRlIGluc3RhbmNlb2YgSW5zcGVj
dG9yVGVzdC5UYWJsZURlbGVnYXRlKTsKIAotICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IGNyZWF0
ZURhdGFTb3VyY2UoKTsKKyAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBjcmVhdGVEYXRhU291cmNl
KG51bWJlck9mUm93cyk7CiAgICAgICAgIGRlbGVnYXRlLml0ZW1zID0gZGF0YVNvdXJjZS5pdGVt
czsKICAgICAgICAgcmV0dXJuIGNyZWF0ZVRhYmxlSW50ZXJuYWwoZGF0YVNvdXJjZSwgZGVsZWdh
dGUpOwogICAgIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGFibGUvdGFi
bGUtcmVtb3ZlLXJvd3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RhYmxl
L3RhYmxlLXJlbW92ZS1yb3dzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmUzNGFiMGQzMjIy
OWIxOGJlZDZjYWU4ZmMxZjI0MWIwNDA4MTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RhYmxlL3RhYmxlLXJlbW92ZS1yb3dzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDg0IEBACitUZXN0cyB0aGF0IHJvd3MgY2FuIGJlIHJlbW92ZWQgZnJvbSBUYWJsZSwgYW5k
IHRoYXQgdGhlIHNlbGVjdGlvbiBpcyB1cGRhdGVkIHdoZW4gcmVtb3Zpbmcgc2VsZWN0ZWQgcm93
cy4KKworQW4gYXN0ZXJpeCAoKikgaW5kaWNhdGVzIGEgc2VsZWN0ZWQgcm93OyBhIGh5cGhlbiAo
LSkgaW5kaWNhdGVzIGEgcmVtb3ZlZCByb3cuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBU
YWJsZS5SZW1vdmVSb3dzCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVGFibGUuUmVtb3ZlUm93Lk5v
bmVTZWxlY3RlZAorR2l2ZW4gYSBUYWJsZSB3aXRoIHNlbGVjdGVkIHJvd3MgW10sIHJlbW92ZSBy
b3cgMC4KK1BBU1M6IFNob3VsZCByZW1vdmUgcm93IDAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBUYWJsZS5SZW1vdmVSb3cuU2VsZWN0ZWQKK0dpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCBy
b3dzIFswXSwgcmVtb3ZlIHJvdyAwLgorU2VsZWN0aW9uIGNoYW5nZWQgdG8gW10gYmVmb3JlIHJl
bW92aW5nIHJvdyAwLgorUEFTUzogU2hvdWxkIHJlbW92ZSByb3cgMC4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IFRhYmxlLlJlbW92ZVNlbGVjdGVkUm93cy5TaW5nbGUuU2VsZWN0Rm9sbG93aW5n
CitHaXZlbiBhIFRhYmxlIHdpdGggc2VsZWN0ZWQgcm93cyBbMF06CisgKiBSb3cgMAorICAgUm93
IDEKKyAgIFJvdyAyCisgICBSb3cgMworU2VsZWN0aW9uIGNoYW5nZWQgYmVmb3JlIHJlbW92aW5n
IHJvd3M6CisgLSBSb3cgMAorICogUm93IDEKKyAgIFJvdyAyCisgICBSb3cgMworUEFTUzogU2hv
dWxkIHJlbW92ZSByb3dzIFswXS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRhYmxlLlJlbW92
ZVNlbGVjdGVkUm93cy5TaW5nbGUuU2VsZWN0UHJlY2VkaW5nCitHaXZlbiBhIFRhYmxlIHdpdGgg
c2VsZWN0ZWQgcm93cyBbM106CisgICBSb3cgMAorICAgUm93IDEKKyAgIFJvdyAyCisgKiBSb3cg
MworU2VsZWN0aW9uIGNoYW5nZWQgYmVmb3JlIHJlbW92aW5nIHJvd3M6CisgICBSb3cgMAorICAg
Um93IDEKKyAqIFJvdyAyCisgLSBSb3cgMworUEFTUzogU2hvdWxkIHJlbW92ZSByb3dzIFszXS4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRhYmxlLlJlbW92ZVNlbGVjdGVkUm93cy5NdWx0aXBs
ZS5TZWxlY3RGb2xsb3dpbmcKK0dpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3dzIFswLDJd
OgorICogUm93IDAKKyAgIFJvdyAxCisgKiBSb3cgMgorICAgUm93IDMKK1NlbGVjdGlvbiBjaGFu
Z2VkIGJlZm9yZSByZW1vdmluZyByb3dzOgorIC0gUm93IDAKKyAgIFJvdyAxCisgLSBSb3cgMgor
ICogUm93IDMKK1BBU1M6IFNob3VsZCByZW1vdmUgcm93cyBbMCwyXS4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IFRhYmxlLlJlbW92ZVNlbGVjdGVkUm93cy5NdWx0aXBsZS5TZWxlY3RIb2xlCitH
aXZlbiBhIFRhYmxlIHdpdGggc2VsZWN0ZWQgcm93cyBbMCwzXToKKyAqIFJvdyAwCisgICBSb3cg
MQorICAgUm93IDIKKyAqIFJvdyAzCitTZWxlY3Rpb24gY2hhbmdlZCBiZWZvcmUgcmVtb3Zpbmcg
cm93czoKKyAtIFJvdyAwCisgKiBSb3cgMQorICAgUm93IDIKKyAtIFJvdyAzCitQQVNTOiBTaG91
bGQgcmVtb3ZlIHJvd3MgWzAsM10uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUYWJsZS5SZW1v
dmVTZWxlY3RlZFJvd3MuTXVsdGlwbGUuU2VsZWN0UHJlY2VkaW5nCitHaXZlbiBhIFRhYmxlIHdp
dGggc2VsZWN0ZWQgcm93cyBbMiwzXToKKyAgIFJvdyAwCisgICBSb3cgMQorICogUm93IDIKKyAq
IFJvdyAzCitTZWxlY3Rpb24gY2hhbmdlZCBiZWZvcmUgcmVtb3Zpbmcgcm93czoKKyAgIFJvdyAw
CisgKiBSb3cgMQorIC0gUm93IDIKKyAtIFJvdyAzCitQQVNTOiBTaG91bGQgcmVtb3ZlIHJvd3Mg
WzIsM10uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUYWJsZS5SZW1vdmVSb3cuTm90Q2FjaGVk
CitHaXZlbiBhIFRhYmxlIHdpdGggc2VsZWN0ZWQgcm93cyBbXSwgcmVtb3ZlIHJvdyA5OTkuCitQ
QVNTOiBTaG91bGQgcmVtb3ZlIHJvdyA5OTkuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RhYmxlL3RhYmxlLXJlbW92ZS1yb3dzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2MTUwMzNmODIy
YzAzZGUxNmUzM2I3MTk2NjkxZjI2YTQ2MGJlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90YWJsZS90YWJsZS1yZW1vdmUtcm93cy5odG1sCkBAIC0wLDAgKzEsMjA2
IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGFibGUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnJlZGlyZWN0
UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZVN5bmNTdWl0ZSgiVGFibGUuUmVtb3ZlUm93cyIpOworCisgICAgZnVuY3Rpb24gbG9n
VGFibGUodGFibGUsIHJvd3NUb1JlbW92ZSA9IFtdKSB7CisgICAgICAgIGZvciAobGV0IHJvd0lu
ZGV4ID0gMDsgcm93SW5kZXggPCB0YWJsZS5udW1iZXJPZlJvd3M7ICsrcm93SW5kZXgpIHsKKyAg
ICAgICAgICAgIGxldCB0eXBlID0gIiAiOworICAgICAgICAgICAgaWYgKHJvd3NUb1JlbW92ZS5p
bmNsdWRlcyhyb3dJbmRleCkpCisgICAgICAgICAgICAgICAgdHlwZSA9ICItIjsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHRhYmxlLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhyb3dJbmRleCkpCisgICAg
ICAgICAgICAgICAgdHlwZSA9ICIqIjsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGAg
JHt0eXBlfSBSb3cgJHtyb3dJbmRleH1gKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNz
IFJlbW92ZVJvd1Rlc3REZWxlZ2F0ZSBleHRlbmRzIEluc3BlY3RvclRlc3QuVGFibGVEZWxlZ2F0
ZQorICAgIHsKKyAgICAgICAgY29uc3RydWN0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICBz
dXBlcigpOworCisgICAgICAgICAgICB0aGlzLl9yb3dJbmRleCA9IE5hTjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFB1YmxpYworCisgICAgICAgIHRyaWdnZXJSZW1vdmVSb3codGFibGUsIHJv
d0luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChpc05h
Tih0aGlzLl9yb3dJbmRleCkpOworCisgICAgICAgICAgICB0aGlzLl9yb3dJbmRleCA9IHJvd0lu
ZGV4OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgR2l2ZW4gYSBUYWJsZSB3aXRo
IHNlbGVjdGVkIHJvd3MgWyR7dGFibGUuc2VsZWN0ZWRSb3dzfV0sIHJlbW92ZSByb3cgJHtyb3dJ
bmRleH0uYCk7CisgICAgICAgICAgICB0YWJsZS5yZW1vdmVSb3cocm93SW5kZXgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gVGFibGUgZGVsZWdhdGUKKworICAgICAgICB0YWJsZURpZFJlbW92
ZVJvd3ModGFibGUsIHJvd0luZGV4ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1cGVyLnRh
YmxlRGlkUmVtb3ZlUm93cyh0YWJsZSwgcm93SW5kZXhlcyk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHJvd0luZGV4ZXMsIFt0aGlzLl9yb3dJbmRleF0s
IGBTaG91bGQgcmVtb3ZlIHJvdyAke3RoaXMuX3Jvd0luZGV4fS5gKTsKKyAgICAgICAgICAgIHRo
aXMuX3Jvd0luZGV4ID0gTmFOOworICAgICAgICB9CisKKyAgICAgICAgdGFibGVTZWxlY3Rpb25E
aWRDaGFuZ2UodGFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc05hTih0aGlzLl9y
b3dJbmRleCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZyhgU2VsZWN0aW9uIGNoYW5nZWQgdG8gWyR7dGFibGUuc2VsZWN0ZWRSb3dzfV0g
YmVmb3JlIHJlbW92aW5nIHJvdyAke3RoaXMuX3Jvd0luZGV4fS5gKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGNsYXNzIFJlbW92ZVNlbGVjdGVkUm93c1Rlc3REZWxlZ2F0ZSBleHRlbmRzIElu
c3BlY3RvclRlc3QuVGFibGVEZWxlZ2F0ZQorICAgIHsKKyAgICAgICAgY29uc3RydWN0b3IoKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdXBlcigpOworCisgICAgICAgICAgICB0aGlzLl9yb3dJ
bmRleGVzID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1YmxpYworCisgICAgICAg
IHRyaWdnZXJSZW1vdmVTZWxlY3RlZFJvd3ModGFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KCF0aGlzLl9yb3dJbmRleGVzKTsKKworICAgICAgICAgICAg
dGhpcy5fcm93SW5kZXhlcyA9IHRhYmxlLnNlbGVjdGVkUm93czsKKworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coYEdpdmVuIGEgVGFibGUgd2l0aCBzZWxlY3RlZCByb3dzIFske3RoaXMu
X3Jvd0luZGV4ZXN9XTpgKTsKKyAgICAgICAgICAgIGxvZ1RhYmxlKHRhYmxlKTsKKworICAgICAg
ICAgICAgdGFibGUucmVtb3ZlU2VsZWN0ZWRSb3dzKCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBUYWJsZSBkZWxlZ2F0ZQorCisgICAgICAgIHRhYmxlRGlkUmVtb3ZlUm93cyh0YWJsZSwgcm93
SW5kZXhlcykKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIudGFibGVEaWRSZW1vdmVSb3dz
KHRhYmxlLCByb3dJbmRleGVzKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RT
aGFsbG93RXF1YWwocm93SW5kZXhlcywgdGhpcy5fcm93SW5kZXhlcywgYFNob3VsZCByZW1vdmUg
cm93cyBbJHt0aGlzLl9yb3dJbmRleGVzfV0uYCk7CisgICAgICAgICAgICB0aGlzLl9yb3dJbmRl
eGVzID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHRhYmxlU2VsZWN0aW9uRGlkQ2hhbmdl
KHRhYmxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3Jvd0luZGV4ZXMpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
U2VsZWN0aW9uIGNoYW5nZWQgYmVmb3JlIHJlbW92aW5nIHJvd3M6YCk7CisgICAgICAgICAgICBs
b2dUYWJsZSh0YWJsZSwgdGhpcy5fcm93SW5kZXhlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBjb25zdCBudW1iZXJPZlJvd3MgPSA0OworICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IG51bWJl
ck9mUm93cyAtIDE7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJU
YWJsZS5SZW1vdmVSb3cuTm9uZVNlbGVjdGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1v
dmUgYSByb3cgZnJvbSBhIHRhYmxlIHdpdGggbm8gc2VsZWN0ZWQgcm93cy4iLAorICAgICAgICB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRlc3REZWxlZ2F0ZSA9IG5ldyBSZW1vdmVSb3dUZXN0
RGVsZWdhdGU7CisgICAgICAgICAgICBsZXQgdGFibGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRh
YmxlV2l0aERlbGVnYXRlKHRlc3REZWxlZ2F0ZSwgbnVtYmVyT2ZSb3dzKTsKKworICAgICAgICAg
ICAgdGVzdERlbGVnYXRlLnRyaWdnZXJSZW1vdmVSb3codGFibGUsIDApOworCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiVGFibGUuUmVtb3ZlUm93LlNlbGVjdGVkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJSZW1vdmUgdGhlIG9ubHkgc2VsZWN0ZWQgdGFibGUgcm93LiIsCisgICAg
ICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdGVzdERlbGVnYXRlID0gbmV3IFJlbW92ZVJv
d1Rlc3REZWxlZ2F0ZTsKKyAgICAgICAgICAgIGxldCB0YWJsZSA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlVGFibGVXaXRoRGVsZWdhdGUodGVzdERlbGVnYXRlLCBudW1iZXJPZlJvd3MpOworCisgICAg
ICAgICAgICB0YWJsZS5zZWxlY3RSb3coMCk7CisgICAgICAgICAgICB0ZXN0RGVsZWdhdGUudHJp
Z2dlclJlbW92ZVJvdyh0YWJsZSwgMCk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3Jp
cHRpb24sIHJvd0luZGV4ZXN9KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgdGVzdERlbGVnYXRlID0gbmV3IFJlbW92ZVNlbGVjdGVkUm93c1Rlc3REZWxl
Z2F0ZTsKKyAgICAgICAgICAgICAgICBsZXQgdGFibGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRh
YmxlV2l0aERlbGVnYXRlKHRlc3REZWxlZ2F0ZSwgbnVtYmVyT2ZSb3dzKTsKKyAgICAgICAgICAg
ICAgICB0YWJsZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHRydWU7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCByb3dJbmRleCBvZiByb3dJbmRleGVzKQorICAgICAgICAgICAgICAgICAg
ICB0YWJsZS5zZWxlY3RSb3cocm93SW5kZXgsIHRydWUpOworCisgICAgICAgICAgICAgICAgdGVz
dERlbGVnYXRlLnRyaWdnZXJSZW1vdmVTZWxlY3RlZFJvd3ModGFibGUpOworCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRhYmxlLlJlbW92ZVNlbGVjdGVkUm93
cy5TaW5nbGUuU2VsZWN0Rm9sbG93aW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUg
dGhlIHNlbGVjdGVkIHJvdywgY2F1c2luZyB0aGUgZm9sbG93aW5nIHJvdyB0byBiZSBzZWxlY3Rl
ZC4iLAorICAgICAgICByb3dJbmRleGVzOiBbMF0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJUYWJsZS5SZW1vdmVTZWxlY3RlZFJvd3MuU2luZ2xlLlNlbGVj
dFByZWNlZGluZyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVtb3ZlIHRoZSBzZWxlY3RlZCBy
b3csIGNhdXNpbmcgdGhlIHByZWNlZGluZyByb3cgdG8gYmUgc2VsZWN0ZWQuIiwKKyAgICAgICAg
cm93SW5kZXhlczogW2xhc3RSb3dJbmRleF0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJUYWJsZS5SZW1vdmVTZWxlY3RlZFJvd3MuTXVsdGlwbGUuU2VsZWN0
Rm9sbG93aW5nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUgc2VsZWN0ZWQgcm93cywg
Y2F1c2luZyB0aGUgcm93IGZvbGxvd2luZyB0aGUgc2VsZWN0aW9uIHRvIGJlIHNlbGVjdGVkLiIs
CisgICAgICAgIHJvd0luZGV4ZXM6IFswLCBsYXN0Um93SW5kZXggLSAxXSwKKyAgICB9KTsKKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRhYmxlLlJlbW92ZVNlbGVjdGVkUm93
cy5NdWx0aXBsZS5TZWxlY3RIb2xlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJSZW1vdmUgc2Vs
ZWN0ZWQgcm93cywgY2F1c2luZyB0aGUgZmlyc3QgZGVzZWxlY3RlZCByb3cgaW5zaWRlIHRoZSBz
ZWxlY3Rpb24gdG8gYmUgc2VsZWN0ZWQuIiwKKyAgICAgICAgcm93SW5kZXhlczogWzAsIGxhc3RS
b3dJbmRleF0sCisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJU
YWJsZS5SZW1vdmVTZWxlY3RlZFJvd3MuTXVsdGlwbGUuU2VsZWN0UHJlY2VkaW5nIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJSZW1vdmUgc2VsZWN0ZWQgcm93cywgY2F1c2luZyB0aGUgcm93IHBy
ZWNlZGluZyB0aGUgc2VsZWN0aW9uIHRvIGJlIHNlbGVjdGVkLiIsCisgICAgICAgIHJvd0luZGV4
ZXM6IFtsYXN0Um93SW5kZXggLSAxLCBsYXN0Um93SW5kZXhdLAorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVGFibGUuUmVtb3ZlUm93Lk5vdENhY2hl
ZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiUmVtb3ZlIGEgcm93IHRoYXQgaXMgbm90IGluIHRo
ZSB0YWJsZSBjYWNoZS4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHRlc3RE
ZWxlZ2F0ZSA9IG5ldyBSZW1vdmVSb3dUZXN0RGVsZWdhdGU7CisgICAgICAgICAgICBsZXQgdGFi
bGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVRhYmxlV2l0aERlbGVnYXRlKHRlc3REZWxlZ2F0ZSwg
MTAwMCk7CisKKyAgICAgICAgICAgIHRlc3REZWxlZ2F0ZS50cmlnZ2VyUmVtb3ZlUm93KHRhYmxl
LCA5OTkpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB0aGF0IHJvd3MgY2Fu
IGJlIHJlbW92ZWQgZnJvbSBUYWJsZSwgYW5kIHRoYXQgdGhlIHNlbGVjdGlvbiBpcyB1cGRhdGVk
IHdoZW4gcmVtb3Zpbmcgc2VsZWN0ZWQgcm93cy48L3A+CisgICAgPHA+QW4gYXN0ZXJpeCAoKikg
aW5kaWNhdGVzIGEgc2VsZWN0ZWQgcm93OyBhIGh5cGhlbiAoLSkgaW5kaWNhdGVzIGEgcmVtb3Zl
ZCByb3cuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2luZGV4LXNldC1leHBlY3RlZC50eHQKaW5kZXggYzMzNjNjZjdj
YTgzZGJlMDFjMWE1YmIzOWY0MTU0ZTE5ZDMyM2E3YS4uODFmOWE1ZTJjODcxNDhlNWVlMmZhMGFm
ZjQwZTk5MDU2YTVkYTNiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQt
dGVzdHMvaW5kZXgtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dW5pdC10ZXN0cy9pbmRleC1zZXQtZXhwZWN0ZWQudHh0CkBAIC02OCwzICs2OCw3IEBAIFBBU1M6
IEluZGV4IGxlc3MgdGhhbiAxIHNob3VsZCBiZSBOYU4uCiBQQVNTOiBJbmRleCBsZXNzIHRoYW4g
MiBzaG91bGQgYmUgMS4KIFBBU1M6IEluZGV4IGxlc3MgdGhhbiAzIHNob3VsZCBiZSAyLgogCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogSW5kZXhTZXQucHJvdG90eXBlLmNvcHkKK1BBU1M6IENvcHkg
YW5kIG9yaWdpbmFsIHNob3VsZCBiZSBkaWZmZXJlbnQgb2JqZWN0cy4KK1BBU1M6IENvcHkgYW5k
IG9yaWdpbmFsIHNob3VsZCBoYXZlIHRoZSBzYW1lIHZhbHVlcy4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvaW5kZXgtc2V0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9pbmRleC1zZXQuaHRtbAppbmRleCAwNWEzZGI5NzNiYWUw
MDgxOWM0MzU4M2I3YWNhNDk4YWNlYWI3YjgxLi42YzY0ZWE4Y2JmMDliNWNhMmZhMDkyMDU5YTdm
NGRlNjI2ODIwYzYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy9pbmRleC1zZXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9p
bmRleC1zZXQuaHRtbApAQCAtMTk0LDYgKzE5NCwxOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
SW5kZXhTZXQucHJvdG90eXBlLmNvcHkiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IG9yaWdpbmFsID0gbmV3IFdJLkluZGV4U2V0KFsxLCAyLCAzXSk7CisgICAgICAgICAgICBs
ZXQgY29waWVkID0gb3JpZ2luYWwuY29weSgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3ROb3RFcXVhbChjb3BpZWQsIG9yaWdpbmFsLCAiQ29weSBhbmQgb3JpZ2luYWwgc2hvdWxk
IGJlIGRpZmZlcmVudCBvYmplY3RzLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RTaGFsbG93RXF1YWwoQXJyYXkuZnJvbShjb3BpZWQpLCBBcnJheS5mcm9tKG9yaWdpbmFsKSwg
IkNvcHkgYW5kIG9yaWdpbmFsIHNob3VsZCBoYXZlIHRoZSBzYW1lIHZhbHVlcy4iKTsKKworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>