<?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>212608</bug_id>
          
          <creation_ts>2020-06-01 13:26:01 -0700</creation_ts>
          <short_desc>Any active sqlite transactions for the ITP database should be aborted when the network process suspends.</short_desc>
          <delta_ts>2020-06-03 12:13:31 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211207</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1658023</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-01 13:26:01 -0700</bug_when>
    <thetext>We should abort ITP database transactions that are not finished when the network process suspends, otherwise the unfinished transaction will hold the lock of the database file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658024</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-01 13:27:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/60540768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658036</commentid>
    <comment_count>2</comment_count>
      <attachid>400755</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-01 13:47:32 -0700</bug_when>
    <thetext>Created attachment 400755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658458</commentid>
    <comment_count>3</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-02 14:49:48 -0700</bug_when>
    <thetext>I talked with Sihui offline and we are not convinced aborting transactions will solve the issue, mainly because there is time between when NetworkProcess::prepareToSuspend() is called and when the process actually suspends. So it is unlikely that a previous transaction in the ITP database is still occurring after the process has suspended. This indicates the problem could be that the thread is not being stopped properly in the call to WebResourceLoadStatistics::suspend().

I posted a patch adding debug asserts to this area of code in: https://bugs.webkit.org/show_bug.cgi?id=212663 to get more information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658481</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-02 16:03:20 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #3)
&gt; I talked with Sihui offline and we are not convinced aborting transactions
&gt; will solve the issue, mainly because there is time between when
&gt; NetworkProcess::prepareToSuspend() is called and when the process actually
&gt; suspends. So it is unlikely that a previous transaction in the ITP database
&gt; is still occurring after the process has suspended. This indicates the
&gt; problem could be that the thread is not being stopped properly in the call
&gt; to WebResourceLoadStatistics::suspend().
&gt; 
&gt; I posted a patch adding debug asserts to this area of code in:
&gt; https://bugs.webkit.org/show_bug.cgi?id=212663 to get more information.

If aborting transactions is what IDB does, I think ITP should do the same.

A transaction can take a large amount of time when when you get a PrepareToSuspend, you may get suspended fairly quick after, especially in the case of imminent suspension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658490</commentid>
    <comment_count>5</comment_count>
      <attachid>400755</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-02 16:20:31 -0700</bug_when>
    <thetext>Comment on attachment 400755
Patch

I am 90% sure this is wrong and re-introducing a bug that we fixed recently. I am a bit sad that the API tests are not failing since I think we added a test to cover that. The reason WebResourceLoadStatisticsStore was static was that there is only one shared queue nowadays. You don&apos;t want to go through every store and hang each queue separately because they all share the same queue..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658491</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-02 16:21:43 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 400755 [details]
&gt; Patch
&gt; 
&gt; I am 90% sure this is wrong and re-introducing a bug that we fixed recently.
&gt; I am a bit sad that the API tests are not failing since I think we added a
&gt; test to cover that. The reason WebResourceLoadStatisticsStore was static was
&gt; that there is only one shared queue nowadays. You don&apos;t want to go through
&gt; every store and hang each queue separately because they all share the same
&gt; queue..

See Bug 211207.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658493</commentid>
    <comment_count>7</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-02 16:23:43 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 400755 [details]
&gt; Patch
&gt; 
&gt; I am 90% sure this is wrong and re-introducing a bug that we fixed recently.
&gt; I am a bit sad that the API tests are not failing since I think we added a
&gt; test to cover that. The reason WebResourceLoadStatisticsStore was static was
&gt; that there is only one shared queue nowadays. You don&apos;t want to go through
&gt; every store and hang each queue separately because they all share the same
&gt; queue..

Hmm I see. I am not sure how to access the database object from a static function, then, am I missing something obvious?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658499</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-02 16:28:36 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #7)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; Comment on attachment 400755 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I am 90% sure this is wrong and re-introducing a bug that we fixed recently.
&gt; &gt; I am a bit sad that the API tests are not failing since I think we added a
&gt; &gt; test to cover that. The reason WebResourceLoadStatisticsStore was static was
&gt; &gt; that there is only one shared queue nowadays. You don&apos;t want to go through
&gt; &gt; every store and hang each queue separately because they all share the same
&gt; &gt; queue..
&gt; 
&gt; Hmm I see. I am not sure how to access the database object from a static
&gt; function, then, am I missing something obvious?

Maybe you can keep a static HashMap of all ResourceLoadStatisticsDatabaseStore objects which you only modify / query from the background ITP queue. Then in the static suspend, you dispatch to the background queue, iterate through each ResourceLoadStatisticsDatabaseStore object in the map to interrupt their transactions and only then suspend the thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658530</commentid>
    <comment_count>9</comment_count>
      <attachid>400873</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-02 18:13:42 -0700</bug_when>
    <thetext>Created attachment 400873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658780</commentid>
    <comment_count>10</comment_count>
      <attachid>400873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-03 10:39:57 -0700</bug_when>
    <thetext>Comment on attachment 400873
Patch

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

Please add a static allStores() function to ResourceLoadStatisticsDatabaseStore and move the logic there. Then you add to the HashSet in the ResourceLoadStatisticsDatabaseStore constructor and remove in the ResourceLoadStatisticsDatabaseStore destructor.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:178
&gt; +    static NeverDestroyed&lt;HashMap&lt;WebResourceLoadStatisticsStore*, ResourceLoadStatisticsDatabaseStore*&gt;&gt; map;

Why isn&apos;t this a HashSet&lt;ResourceLoadStatisticsDatabaseStore*&gt; ?

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:179
&gt; +    return map;

I would ASSERT(!RunLoop::isMain()); in here.

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:199
&gt; +                statisticsDatabaseStoreMap().add(this, downcast&lt;ResourceLoadStatisticsDatabaseStore&gt;(m_statisticsStore.get()));

You add but never remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658782</commentid>
    <comment_count>11</comment_count>
      <attachid>400873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-03 10:42:08 -0700</bug_when>
    <thetext>Comment on attachment 400873
Patch

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

&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1436
&gt; +        for (auto&amp; databaseStore : statisticsDatabaseStoreMap().values())

Your code is not thread-safe either since you iterate over the map in the background thread but populate the map in the main thread. When I suggested this, I said the HashMap should only be modified / queried on the background queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658783</commentid>
    <comment_count>12</comment_count>
      <attachid>400873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-03 10:44:42 -0700</bug_when>
    <thetext>Comment on attachment 400873
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:1436
&gt;&gt; +        for (auto&amp; databaseStore : statisticsDatabaseStoreMap().values())
&gt; 
&gt; Your code is not thread-safe either since you iterate over the map in the background thread but populate the map in the main thread. When I suggested this, I said the HashMap should only be modified / queried on the background queue.

Never mind this comment, from the diff output, I missed that you were populating in the background queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658802</commentid>
    <comment_count>13</comment_count>
      <attachid>400946</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-06-03 11:09:53 -0700</bug_when>
    <thetext>Created attachment 400946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658803</commentid>
    <comment_count>14</comment_count>
      <attachid>400946</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-03 11:11:21 -0700</bug_when>
    <thetext>Comment on attachment 400946
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658833</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-03 12:13:30 -0700</bug_when>
    <thetext>Committed r262505: &lt;https://trac.webkit.org/changeset/262505&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400946.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400755</attachid>
            <date>2020-06-01 13:47:32 -0700</date>
            <delta_ts>2020-06-02 18:13:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212608-20200601134732.patch</filename>
            <type>text/plain</type>
            <size>7969</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RkZDFlNjYyM2Y4MWU2
MTk4YmZmODJhNTdhMzRhNTViYjE5MzAzOS4uYTUwNThiY2IxNzFjODNhOWM2NjdjMTgwNmEwNDA1
OWQyMDRkZTMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTAxICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFueSBhY3Rp
dmUgc3FsaXRlIHRyYW5zYWN0aW9ucyBmb3IgdGhlIElUUCBkYXRhYmFzZSBzaG91bGQgYmUgYWJv
cnRlZCB3aGVuIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc3VzcGVuZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjYwOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjA1NDA3Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIFdFQkNPUkVfRVhQT1JUIG1hY3JvIHRvIHVzZSBpbnRlcnJ1cHQoKSBmdW5j
dGlvbiBpbgorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oOgorCiAyMDIwLTA1LTI1ICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
ZmxleGJveF0gVGFibGVzIGFzIGZsZXggaXRlbXMgc2hvdWxkIG9iZXkgdGhlIGZsZXggY29udGFp
bmVyIHNpemluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjODRlMzQ3YjQwOWZkMGJkZDRkOWEzZmM5Yjk4ZjQ2OTU3
OTNhYzczLi5mMGM4ZGFiNjFiZTJkZTRhNGE5Mzc2MDRiNWEyNTlmOWE5Y2ZjNGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA2LTAxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFueSBhY3RpdmUgc3FsaXRlIHRyYW5zYWN0aW9u
cyBmb3IgdGhlIElUUCBkYXRhYmFzZSBzaG91bGQgYmUgYWJvcnRlZCB3aGVuIHRoZSBuZXR3b3Jr
IHByb2Nlc3Mgc3VzcGVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMjYwOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1NDA3Njg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbHMgdG8gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKCkgc2hvdWxkIGFib3J0IGFueQor
ICAgICAgICBhY3RpdmUgU1FMaXRlIHRyYW5zYWN0aW9ucy4gVW5maW5pc2hlZCB0cmFuc2FjdGlv
bnMgd2lsbCBob2xkIHRoZSBsb2NrCisgICAgICAgIG9mIGEgZGF0YWJhc2UgZmlsZSBhbmQgY291
bGQgY2F1c2UgdGhlIG5ldHdvcmsgcHJvY2VzcyB0byBjcmFzaCB3aGVuCisgICAgICAgIHN1c3Bl
bmRpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFib3J0RXhpc3RpbmdUcmFuc2FjdGlvbik6Cisg
ICAgICAgIENhbGwgc3FsaXRlM19pbnRlcnJ1cHQoKSBpZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlv
biBpcyBvcGVuLgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIGRvY3MgKGh0dHBzOi8vd3d3LnNx
bGl0ZS5vcmcvYzNyZWYvaW50ZXJydXB0Lmh0bWwpIGl0CisgICAgICAgIGlzIG5vdCBzYWZlIHRv
IHVzZSBzcWxpdGUzX2ludGVycnVwdCBvbiBhIGNsb3NlZCBkYXRhYmFzZSBjb25uZWN0aW9uLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICBUdXJuIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZCgpIGludG8gYSBtZW1iZXIgZnVuY3Rp
b24gc28gaXQgY2FuCisgICAgICAgIGFjY2VzcyB0aGUgSVRQIGRhdGFiYXNlLgorCiAyMDIwLTA2
LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9O
IEZBSUxVUkUgKHIyMjA5MzEpOiAhbV9mdW5jdGlvbiBpbiB+Q29tcGxldGlvbkhhbmRsZXIoKSBh
ZnRlciBzd2l0Y2ggdGFicwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaAppbmRleCBhNzRkYTk2Mzg5MTA3MDBmMTVmNDM5ZDUwMjM2ZTMzOWYyOTNlZTkyLi5j
NmFkNTY1OTc5MzBkOTUzZGI1Mzk4MmUyNjNkZTdhZWVmMWMwNDlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCB0cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzczsgfQogCiAgICAgLy8gQWJvcnRzIHRoZSBjdXJyZW50IGRhdGFi
YXNlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aHJlYWQgc2FmZS4KLSAgICB2b2lkIGludGVycnVwdCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW50ZXJydXB0KCk7CiAKICAgICBpbnQ2NF90IGxh
c3RJbnNlcnRSb3dJRCgpOwogICAgIGludCBsYXN0Q2hhbmdlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNGY5Mzc5
NTBlZWQ1NzY4MTkwMjA4Y2JhMWQwNjkyZWEzMjg5YmU2YS4uYjA1OTk3MTFhMTFjOGY5MWJmNzQ2
OTU1NjFjZmNiMGZmMTBhZmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC01MjMsNiArNTIzLDEyIEBAIFNRTGl0ZVN0
YXRlbWVudEF1dG9SZXNldFNjb3BlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpzY29wZWRTdGF0ZW1lCiAgICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
IHsgc3RhdGVtZW50LmdldCgpIH07CiB9CiAKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmFib3J0RXhpc3RpbmdUcmFuc2FjdGlvbigpCit7CisgICAgaWYgKG1fZGF0
YWJhc2UuaXNPcGVuKCkpCisgICAgICAgIG1fZGF0YWJhc2UuaW50ZXJydXB0KCk7Cit9CisKIGJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmlzRW1wdHkoKSBjb25zdAog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA0N2MxM2RiZmVlMTZmOTZl
ZDNiNjlhNWMxNmYwNGExODY2MTI2NzE2Li5mNzkzMTJmOTQzYWRmZTg1ZmMxZmVjZDRmNDc4ZjNl
ZGUwZTdkZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGRvbWFp
bklERXhpc3RzSW5EYXRhYmFzZShpbnQpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBj
aGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpOwogICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGFib3J0RXhpc3RpbmdUcmFuc2Fj
dGlvbigpOwogCiBwcml2YXRlOgogICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRl
SWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYTNjZTc2MjdmYWFkMjBlNzk3MmU5ZTFlNjJhZmUzMjIw
NGYxZjkzYy4uMWFhMDM1MWI3MDFlYjdkODdlNzQ5YTA5NjRiMzMzYWZkNjAzNzBjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE0MjIs
NyArMTQyMiw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgICAgIHJldHVybjsKICAg
ICBzdXNwZW5kZWRTdGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsKIAotICAgIHNoYXJlZFN0YXRp
c3RpY3NRdWV1ZSgpLT5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgeworICAgIHNoYXJlZFN0YXRpc3RpY3NR
dWV1ZSgpLT5kaXNwYXRjaChbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0
aWNzU3RvcmUgJiYgaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0
YXRpc3RpY3NTdG9yZSkpCisgICAgICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKS5hYm9ydEV4aXN0aW5nVHJhbnNh
Y3Rpb24oKTsKIAogICAgICAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIoc3VzcGVuZGVkU3Rh
dGVMb2NrKTsKICAgICAgICAgQVNTRVJUKHN1c3BlbmRlZFN0YXRlICE9IFN0YXRlOjpTdXNwZW5k
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4
IDM4OTdkNTFhYTk4MTljYWM1NjgzZmYwN2E0NzNlYzgyNTFhZWJjNzguLjNiNGM3NmIyZWE5NGM1
NzBhN2Q3YmNiMDg3MWYwZWRiYWNlMjUwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0
eURhdGEgewogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKICAgICB2b2lkIGFn
Z3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7Ci0gICAg
c3RhdGljIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHN0YXRpYyB2b2lk
IHJlc3VtZSgpOwogICAgIAogICAgIGJvb2wgaXNFcGhlbWVyYWwoKSBjb25zdCB7IHJldHVybiBt
X2lzRXBoZW1lcmFsID09IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1l
cmFsOjpZZXM7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDdjYTM2NzZiYTcxYTY3YTQxZGJmMjFlZDc5NDRmMTJhNzI3YzQ0NjIu
LmNhZWQ3ZmZmMDA1ZjI0NDE1NjY4NjNkM2FmOTcyZjFjZGNhYmQxMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjU4LDcgKzIy
NTgsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3Vz
cGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICAgICB9KTsKICAgICAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIGZvckVhY2hO
ZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24ucmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c3VzcGVu
ZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIH0pOwogI2VuZGlmCiAKICAgICBwbGF0
Zm9ybVN5bmNBbGxDb29raWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400873</attachid>
            <date>2020-06-02 18:13:42 -0700</date>
            <delta_ts>2020-06-03 11:09:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212608-20200602181342.patch</filename>
            <type>text/plain</type>
            <size>6709</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZhZGMyN2VmNWIzZThj
NThiM2U1YTQ5NGZkNDhmMjM4NWZjMjRhYi4uNjUyZjdiMzhhOGNhNjFlNjViNTAxNjAwMzJmZDlm
NzBiY2I1Mjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTAyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFueSBhY3Rp
dmUgc3FsaXRlIHRyYW5zYWN0aW9ucyBmb3IgdGhlIElUUCBkYXRhYmFzZSBzaG91bGQgYmUgYWJv
cnRlZCB3aGVuIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc3VzcGVuZHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MDgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYwNTQwNzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXRUJDT1JFX0VYUE9SVCBtYWNybyB0byB1c2UgaW50ZXJydXB0KCkgZnVu
Y3Rpb24gaW4KKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKwogMjAyMC0wNi0wMiAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2MjQyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGNmYzkxYjEyMmU0YjE5ZjA2Y2EwNzRm
MjA4ODQ3YWNjYzQ0ZWM2Mi4uMDk5YjAxYjE1Yjg0ZmU1YTM0MTY0NTA2ZTE2ODNiZTRiNWZkOWIx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0wNi0wMiAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBbnkgYWN0aXZlIHNxbGl0ZSB0
cmFuc2FjdGlvbnMgZm9yIHRoZSBJVFAgZGF0YWJhc2Ugc2hvdWxkIGJlIGFib3J0ZWQgd2hlbiB0
aGUgbmV0d29yayBwcm9jZXNzIHN1c3BlbmRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNjA4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDU0
MDc2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YWxscyB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoKSBzaG91bGQg
YWJvcnQgYW55CisgICAgICAgIGFjdGl2ZSBTUUxpdGUgdHJhbnNhY3Rpb25zLiBVbmZpbmlzaGVk
IHRyYW5zYWN0aW9ucyB3aWxsIGhvbGQgdGhlIGxvY2sKKyAgICAgICAgb2YgYSBkYXRhYmFzZSBm
aWxlIGFuZCBjb3VsZCBjYXVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHRvIGNyYXNoIHdoZW4KKyAg
ICAgICAgc3VzcGVuZGluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW50ZXJydXB0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZCk6
CisKIDIwMjAtMDYtMDIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjI0MjQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGE3NGRhOTYzODkxMDcwMGYxNWY0Mzlk
NTAyMzZlMzM5ZjI5M2VlOTIuLmM2YWQ1NjU5NzkzMGQ5NTNkYjUzOTgyZTI2M2RlN2FlZWYxYzA0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIHRyYW5zYWN0aW9uSW5Qcm9ncmVzcygp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOyB9CiAKICAgICAvLyBBYm9y
dHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLiBUaGlzIGlzIHRocmVhZCBzYWZlLgot
ICAgIHZvaWQgaW50ZXJydXB0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnRlcnJ1cHQo
KTsKIAogICAgIGludDY0X3QgbGFzdEluc2VydFJvd0lEKCk7CiAgICAgaW50IGxhc3RDaGFuZ2Vz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAppbmRleCA0ZjkzNzk1MGVlZDU3NjgxOTAyMDhjYmExZDA2OTJlYTMyODliZTZhLi4w
ODkyMTM5YzU0ODk2Y2VlYjQ1NGZhMmQ0ZWExYmFkMDgwYTU0Nzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTUyMyw2
ICs1MjMsMTIgQEAgU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnNjb3BlZFN0YXRlbWUKICAgICByZXR1cm4gU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUgeyBzdGF0ZW1lbnQuZ2V0KCkgfTsKIH0KIAordm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW50ZXJydXB0KCkKK3sKKyAgICBpZiAo
bV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgbV9kYXRhYmFzZS5pbnRlcnJ1cHQoKTsKK30K
KwogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aXNFbXB0eSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDQ3YzEzZGJmZWUx
NmY5NmVkM2I2OWE1YzE2ZjA0YTE4NjYxMjY3MTYuLjk1YTA2OTNiYmNmMGQ1MDZkZTU5MzlhOWUx
MWVlNGZkODJjZjQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCk7CiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IGNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCk7CiAgICAgdm9pZCBpbnNlcnRFeHBp
cmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFz
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOworICAgIHZvaWQgaW50ZXJydXB0KCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2Fy
eSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAppbmRleCA3ZTY2YjI1NTFlNWI3N2U3ZDcyNzYzNzA0ZGMwYTRhY2RmNjNlMmZjLi44
NmNiMWFhZDk2ZmFhYTc1MTYzZWQxNDRmMWU1YmVjZmIxZDc5MzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTczLDYgKzE3MywxMiBA
QCBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkKICAgICByZXR1
cm4gcXVldWUuZ2V0KCkuY29weVJlZigpOwogfQogCitzdGF0aWMgSGFzaE1hcDxXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUqLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZSo+JiBzdGF0aXN0aWNzRGF0YWJhc2VTdG9yZU1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKiwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisK
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlz
RXBoZW1lcmFsKQogICAgIDogbV9uZXR3b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vz
c2lvbikpCiAgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShzaGFyZWRTdGF0aXN0aWNzUXVldWUoKSkK
QEAgLTE5MCw2ICsxOTYsOCBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbgogICAgICAgICAgICAg
aWYgKGRhdGFiYXNlRW5hYmxlZCkgewogICAgICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3Jl
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMs
IG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBzZXNzaW9uSUQpOwogCisgICAgICAgICAgICAgICAgc3RhdGlz
dGljc0RhdGFiYXNlU3RvcmVNYXAoKS5hZGQodGhpcywgZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU+KG1fc3RhdGlzdGljc1N0b3JlLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgYXV0byBtZW1vcnlTdG9yZSA9IG1ha2VVbmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVl
dWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwogICAgICAgICAgICAgICAgIGRvd25jYXN0PFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUuZ2V0
KCkpLnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKCptZW1vcnlTdG9yZSk7CiAKQEAgLTE0MjUsNiAr
MTQzMyw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAKICAgICBzaGFyZWRTdGF0aXN0aWNz
UXVldWUoKS0+ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJD
YWxsZXIucmVsZWFzZSgpXSAoKSBtdXRhYmxlIHsKIAorICAgICAgICBmb3IgKGF1dG8mIGRhdGFi
YXNlU3RvcmUgOiBzdGF0aXN0aWNzRGF0YWJhc2VTdG9yZU1hcCgpLnZhbHVlcygpKQorICAgICAg
ICAgICAgZGF0YWJhc2VTdG9yZS0+aW50ZXJydXB0KCk7CisgICAgICAgIAogICAgICAgICBMb2Nr
ZXI8TG9jaz4gc3RhdGVMb2NrZXIoc3VzcGVuZGVkU3RhdGVMb2NrKTsKICAgICAgICAgQVNTRVJU
KHN1c3BlbmRlZFN0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400946</attachid>
            <date>2020-06-03 11:09:53 -0700</date>
            <delta_ts>2020-06-03 12:13:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212608-20200603110952.patch</filename>
            <type>text/plain</type>
            <size>7220</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZhZGMyN2VmNWIzZThj
NThiM2U1YTQ5NGZkNDhmMjM4NWZjMjRhYi4uNjUyZjdiMzhhOGNhNjFlNjViNTAxNjAwMzJmZDlm
NzBiY2I1Mjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTAyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFueSBhY3Rp
dmUgc3FsaXRlIHRyYW5zYWN0aW9ucyBmb3IgdGhlIElUUCBkYXRhYmFzZSBzaG91bGQgYmUgYWJv
cnRlZCB3aGVuIHRoZSBuZXR3b3JrIHByb2Nlc3Mgc3VzcGVuZHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MDgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYwNTQwNzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXRUJDT1JFX0VYUE9SVCBtYWNybyB0byB1c2UgaW50ZXJydXB0KCkgZnVu
Y3Rpb24gaW4KKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKwogMjAyMC0wNi0wMiAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2MjQyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGNmYzkxYjEyMmU0YjE5ZjA2Y2EwNzRm
MjA4ODQ3YWNjYzQ0ZWM2Mi4uMmU5ZTMzMThjM2JlYzM0MmVjNjhlNWE0YzJiNDhlYWZhYjRjYWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wNi0wMyAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBbnkgYWN0aXZlIHNxbGl0ZSB0
cmFuc2FjdGlvbnMgZm9yIHRoZSBJVFAgZGF0YWJhc2Ugc2hvdWxkIGJlIGFib3J0ZWQgd2hlbiB0
aGUgbmV0d29yayBwcm9jZXNzIHN1c3BlbmRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNjA4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDU0
MDc2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YWxscyB0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoKSBzaG91bGQg
YWJvcnQgYW55CisgICAgICAgIGFjdGl2ZSBTUUxpdGUgdHJhbnNhY3Rpb25zLiBVbmZpbmlzaGVk
IHRyYW5zYWN0aW9ucyB3aWxsIGhvbGQgdGhlIGxvY2sKKyAgICAgICAgb2YgYSBkYXRhYmFzZSBm
aWxlIGFuZCBjb3VsZCBjYXVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHRvIGNyYXNoIHdoZW4KKyAg
ICAgICAgc3VzcGVuZGluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6flJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToK
KyAgICAgICAgU3RvcmUgYWxsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlIGlu
c3RhbmNlcyBpbiBhIHN0YXRpYworICAgICAgICBIYXNoU2V0IHNvIGV4aXN0aW5nIHRyYW5zYWN0
aW9ucyBjYW4gYmUgYWJvcnRlZCB3aGVuIHRoZSBwcm9jZXNzIGlzCisgICAgICAgIHByZXBhcmlu
ZyB0byBzdXNwZW5kLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnRlcnJ1cHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3Vz
cGVuZCk6CisKIDIwMjAtMDYtMDIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjI0MjQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGE3NGRhOTYzODkxMDcwMGYx
NWY0MzlkNTAyMzZlMzM5ZjI5M2VlOTIuLmM2YWQ1NjU5NzkzMGQ5NTNkYjUzOTgyZTI2M2RlN2Fl
ZWYxYzA0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIHRyYW5zYWN0aW9uSW5Qcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzOyB9CiAKICAgICAv
LyBBYm9ydHMgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLiBUaGlzIGlzIHRocmVhZCBz
YWZlLgotICAgIHZvaWQgaW50ZXJydXB0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnRl
cnJ1cHQoKTsKIAogICAgIGludDY0X3QgbGFzdEluc2VydFJvd0lEKCk7CiAgICAgaW50IGxhc3RD
aGFuZ2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAppbmRleCA0ZjkzNzk1MGVlZDU3NjgxOTAyMDhjYmExZDA2OTJlYTMyODli
ZTZhLi5hZDliMDY5YTRmM2U2NWIxY2M2ZWU4M2EwZjMxN2U1ZWZiNTQ3NTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAg
LTI3Nyw2ICsyNzcsMTMgQEAgc3RhdGljIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBj
cmVhdGVUYWJsZVF1ZXJpZXMoKQogICAgIHJldHVybiBjcmVhdGVUYWJsZVF1ZXJpZXM7CiB9CiAK
K0hhc2hTZXQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUqPiYgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbFN0b3JlcygpCit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+PiBtYXA7CisgICAgcmV0dXJuIG1h
cDsKK30KIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYg
c3RvcmUsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShzdG9yZSwgd29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQpAQCAtMzAwLDExICsz
MDcsMTMgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28KICAgICB9KTsKIAogICAgIGluY2x1ZGVU
b2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CisgICAgYWxsU3RvcmVzKCkuYWRkKHRo
aXMpOwogfQogCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6flJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKCkKIHsKICAgICBjbG9zZSgpOworICAgIGFsbFN0
b3JlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xvc2UoKQpAQCAtNTIzLDYgKzUzMiwxMiBAQCBTUUxpdGVTdGF0ZW1lbnRB
dXRvUmVzZXRTY29wZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c2NvcGVk
U3RhdGVtZQogICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSB7IHN0YXRl
bWVudC5nZXQoKSB9OwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnRlcnJ1cHQoKQoreworICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAg
ICBtX2RhdGFiYXNlLmludGVycnVwdCgpOworfQorCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKaW5kZXggNDdjMTNkYmZlZTE2Zjk2ZWQzYjY5YTVjMTZmMDRhMTg2NjEyNjcx
Ni4uY2I1NDIwN2JhYWRiNWM4NzJiMmQxNDZhYTNjMjYxODU1NzczNTZhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTgxLDYg
KzgxLDggQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUgZmluYWwg
OiBwdWJsaWMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1MKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUm
LCBXb3JrUXVldWUmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VEaXJlY3RvcnlQYXRoLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgflJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlKCk7CisKKyAgICBzdGF0aWMgSGFzaFNldDxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZSo+JiBhbGxTdG9yZXMoKTsKICAgICB2b2lkIHBvcHVsYXRl
RnJvbU1lbW9yeVN0b3JlKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYp
OwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CkBAIC0xNDQsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKGludCk7CiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGNo
ZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCk7CiAgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3Rh
dGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFzVXNlcklu
dGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJv
b2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOworICAgIHZvaWQgaW50ZXJydXB0KCk7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAppbmRleCA3ZTY2YjI1NTFlNWI3N2U3ZDcyNzYzNzA0ZGMwYTRhY2RmNjNlMmZjLi41Nzg5ZmJi
MWE4M2M3ZWYxYzBjNTkyMjA4YjY5M2VlYzgxYjc2NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTQyNSw2ICsxNDI1LDkgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXQKIAogICAgIHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpLT5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNl
KCldICgpIG11dGFibGUgewogCisgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VTdG9yZSA6IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxTdG9yZXMoKSkKKyAgICAgICAg
ICAgIGRhdGFiYXNlU3RvcmUtPmludGVycnVwdCgpOworICAgICAgICAKICAgICAgICAgTG9ja2Vy
PExvY2s+IHN0YXRlTG9ja2VyKHN1c3BlbmRlZFN0YXRlTG9jayk7CiAgICAgICAgIEFTU0VSVChz
dXNwZW5kZWRTdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>