<?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>206438</bug_id>
          
          <creation_ts>2020-01-17 13:18:18 -0800</creation_ts>
          <short_desc>Frequent sync BackForwardBackListCount/BackForwardForwardListCount IPC on reddit.com</short_desc>
          <delta_ts>2020-01-26 20:39:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206442</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608173</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-17 13:18:18 -0800</bug_when>
    <thetext>Frequent sync BackForwardBackListCount/BackForwardForwardListCount IPC on reddit.com. When scrolling on reddit.com, you frequently see 2 consecutive sync IPCs (WebPageProxy::BackForwardBackListCount then WebPageProxy::BackForwardForwardListCount) from the WebContent process to the UIProcess. Those are bad for performance. This happens every time the script on the back accesses history.length, which is unfortunate, since this history length rarely changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608174</commentid>
    <comment_count>1</comment_count>
      <attachid>388082</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-17 13:23:17 -0800</bug_when>
    <thetext>Created attachment 388082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608469</commentid>
    <comment_count>2</comment_count>
      <attachid>388082</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-18 11:59:26 -0800</bug_when>
    <thetext>Comment on attachment 388082
Patch

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

&gt; Source/WebKit/ChangeLog:18
&gt; +        2. Cache those counts in WebBackForwardListProxy and blow away the cached counts whenever the back/forward list changes. In the
&gt; +           common case (where the back/forward list rarely changes), we now see a single sync IPC instead of many (verified on reddit.com).

If we are going to start caching, why do we need even one sync ipc? In what cases does the WebProcess not know about items added or removed from the list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608817</commentid>
    <comment_count>3</comment_count>
      <attachid>388082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-20 12:07:52 -0800</bug_when>
    <thetext>Comment on attachment 388082
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:18
&gt;&gt; +           common case (where the back/forward list rarely changes), we now see a single sync IPC instead of many (verified on reddit.com).
&gt; 
&gt; If we are going to start caching, why do we need even one sync ipc? In what cases does the WebProcess not know about items added or removed from the list?

In other words, once we start caching we introduce a race, and there is no need to use synchronous IPC to avoid the race. We should just include the counts in the messages that is currently the &quot;invalidate caches&quot; message. Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609052</commentid>
    <comment_count>4</comment_count>
      <attachid>388082</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-21 08:23:09 -0800</bug_when>
    <thetext>Comment on attachment 388082
Patch

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:18
&gt;&gt;&gt; +           common case (where the back/forward list rarely changes), we now see a single sync IPC instead of many (verified on reddit.com).
&gt;&gt; 
&gt;&gt; If we are going to start caching, why do we need even one sync ipc? In what cases does the WebProcess not know about items added or removed from the list?
&gt; 
&gt; In other words, once we start caching we introduce a race, and there is no need to use synchronous IPC to avoid the race. We should just include the counts in the messages that is currently the &quot;invalidate caches&quot; message. Right?

I am not convinced there is a race here since the changes to the list in the UIProcess are made by IPCs from the WebContent process. I invalidate the local cache, and then send the IPC to the UIProcess that will update its list. I guess we could do what Darin suggests and have IPCs that invalidate the cache also send back the counts. I would need to see how much extra complexity this adds though. It is also trickier than it sounds because not all IPCs that update the list in the UIProcess are synchronous. For example, the WebProcess sends a WebPageProxy::BackForwardAddItem async IPC to the UIProcess, which may change those counts. I don&apos;t want to make this IPC synchronous so I cannot get updated counts synchronously.

The WebContent process currently does not maintain a BackForward &quot;list&quot;, it merely has a map of items and asks the UIProcess whenever it needs to do something with history. I guess we could maintain more state in the WebContent process in order to avoid the sync IPC altogether but this would likely be significant refactoring. Given that the back/forward list does not change very often, especially when running the page&apos;s script, I do believe that my patch gets us most of the perf win, with very little complexity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609593</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-22 09:59:19 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 388082 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388082&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/ChangeLog:18
&gt; &gt;&gt;&gt; +           common case (where the back/forward list rarely changes), we now see a single sync IPC instead of many (verified on reddit.com).
&gt; &gt;&gt; 
&gt; &gt;&gt; If we are going to start caching, why do we need even one sync ipc? In what cases does the WebProcess not know about items added or removed from the list?
&gt; &gt; 
&gt; &gt; In other words, once we start caching we introduce a race, and there is no need to use synchronous IPC to avoid the race. We should just include the counts in the messages that is currently the &quot;invalidate caches&quot; message. Right?
&gt; 
&gt; I am not convinced there is a race here since the changes to the list in the
&gt; UIProcess are made by IPCs from the WebContent process. I invalidate the
&gt; local cache, and then send the IPC to the UIProcess that will update its
&gt; list. I guess we could do what Darin suggests and have IPCs that invalidate
&gt; the cache also send back the counts. I would need to see how much extra
&gt; complexity this adds though. It is also trickier than it sounds because not
&gt; all IPCs that update the list in the UIProcess are synchronous. For example,
&gt; the WebProcess sends a WebPageProxy::BackForwardAddItem async IPC to the
&gt; UIProcess, which may change those counts. I don&apos;t want to make this IPC
&gt; synchronous so I cannot get updated counts synchronously.
&gt; 
&gt; The WebContent process currently does not maintain a BackForward &quot;list&quot;, it
&gt; merely has a map of items and asks the UIProcess whenever it needs to do
&gt; something with history. I guess we could maintain more state in the
&gt; WebContent process in order to avoid the sync IPC altogether but this would
&gt; likely be significant refactoring. Given that the back/forward list does not
&gt; change very often, especially when running the page&apos;s script, I do believe
&gt; that my patch gets us most of the perf win, with very little complexity.

I looked into this more and I am still think the patch is correct.
1. I do not think there is a race because the WebBackForwardList changes in the UIProcess are made as a result of IPC messages (e.g. WebPageProxy::BackForwardClear) that are sent by the WebContent process and I make sure the clear the cache in the WebContent process *before* sending those IPCs to the UIProcess.
2. There would be a race if we did what Darin suggest and include counts in response to messages that invalidate the cache. For example, if the WebPageProxy::BackForwardClear async IPC included a response with the updated counts, then responses to WebCore while we&apos;re waiting for the IPC response would use stale data. This would not be an issue if IPCs such as WebPageProxy::BackForwardClear were synchronous but we do not want to add more sync IPC.

I do not have a better proposal at the moment. I agree it would be good to get rid of the sync IPC entirely but this patch at least gets us a most of the way there in terms of perf since history rarely changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609603</commentid>
    <comment_count>6</comment_count>
      <attachid>388435</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-22 10:26:13 -0800</bug_when>
    <thetext>Created attachment 388435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609606</commentid>
    <comment_count>7</comment_count>
      <attachid>388435</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-22 10:36:51 -0800</bug_when>
    <thetext>Comment on attachment 388435
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:133
&gt; +    return m_page ? cacheListCountsIfNecessary().backCount : 0;

It looks strange to have the m_page check here, where m_page is not used.  Let&apos;s move it into cacheListCountsIfNecessary

&gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:60
&gt; +               BuildableName = &quot;libANGLE.a&quot;

This change shouldn&apos;t be here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609608</commentid>
    <comment_count>8</comment_count>
      <attachid>388436</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-22 10:38:35 -0800</bug_when>
    <thetext>Created attachment 388436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609613</commentid>
    <comment_count>9</comment_count>
      <attachid>388439</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-22 10:42:00 -0800</bug_when>
    <thetext>Created attachment 388439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609614</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-22 10:42:18 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 388435 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388435&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:133
&gt; &gt; +    return m_page ? cacheListCountsIfNecessary().backCount : 0;
&gt; 
&gt; It looks strange to have the m_page check here, where m_page is not used. 
&gt; Let&apos;s move it into cacheListCountsIfNecessary
&gt; 
&gt; &gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:60
&gt; &gt; +               BuildableName = &quot;libANGLE.a&quot;
&gt; 
&gt; This change shouldn&apos;t be here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609616</commentid>
    <comment_count>11</comment_count>
      <attachid>388439</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-22 10:43:44 -0800</bug_when>
    <thetext>Comment on attachment 388439
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:63
&gt; +    clearCachedListCounts();

Technically, when the UIProcess restores the session, it could send the counts along with the sessionState so we could populate here. Let me know if you think we should do this.

&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:102
&gt;      m_page-&gt;send(Messages::WebPageProxy::BackForwardAddItem(toBackForwardListItemState(item.get())));

We could do a sendWithAsyncReply() here and get the updated counts back. Let me know if you think I should do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610320</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-23 14:13:57 -0800</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610466</commentid>
    <comment_count>13</comment_count>
      <attachid>388439</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-23 18:28:10 -0800</bug_when>
    <thetext>Comment on attachment 388439
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:63
&gt;&gt; +    clearCachedListCounts();
&gt; 
&gt; Technically, when the UIProcess restores the session, it could send the counts along with the sessionState so we could populate here. Let me know if you think we should do this.

Our past experience is that anything we can do to avoid sync calls ends up helping us prevent surprise performance hiccups. So it seems we’d want to do anything we could do to cut down on them. But despite the explanations you gave earlier, still honestly not sure I understand why we can’t get rid of the sync messaging entirely, which seems like the best longer term solution.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:102
&gt;&gt;      m_page-&gt;send(Messages::WebPageProxy::BackForwardAddItem(toBackForwardListItemState(item.get())));
&gt; 
&gt; We could do a sendWithAsyncReply() here and get the updated counts back. Let me know if you think I should do this.

Same thought.

&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:113
&gt; +    m_cachedBackForwardListCounts = WTFMove(backForwardListCounts);

No need to use WTFMove for a structure containing two integers.

&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:148
&gt; +        m_cachedBackForwardListCounts = WTFMove(backForwardListCounts);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611254</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-26 17:14:46 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Comment on attachment 388439 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388439&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:63
&gt; &gt;&gt; +    clearCachedListCounts();
&gt; &gt; 
&gt; &gt; Technically, when the UIProcess restores the session, it could send the counts along with the sessionState so we could populate here. Let me know if you think we should do this.
&gt; 
&gt; Our past experience is that anything we can do to avoid sync calls ends up
&gt; helping us prevent surprise performance hiccups. So it seems we’d want to do
&gt; anything we could do to cut down on them. But despite the explanations you
&gt; gave earlier, still honestly not sure I understand why we can’t get rid of
&gt; the sync messaging entirely, which seems like the best longer term solution.
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:102
&gt; &gt;&gt;      m_page-&gt;send(Messages::WebPageProxy::BackForwardAddItem(toBackForwardListItemState(item.get())));
&gt; &gt; 
&gt; &gt; We could do a sendWithAsyncReply() here and get the updated counts back. Let me know if you think I should do this.
&gt; 
&gt; Same thought.

Will follow-up for these optimizations.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:113
&gt; &gt; +    m_cachedBackForwardListCounts = WTFMove(backForwardListCounts);
&gt; 
&gt; No need to use WTFMove for a structure containing two integers.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:148
&gt; &gt; +        m_cachedBackForwardListCounts = WTFMove(backForwardListCounts);
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611255</commentid>
    <comment_count>15</comment_count>
      <attachid>388818</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-26 17:16:38 -0800</bug_when>
    <thetext>Created attachment 388818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611272</commentid>
    <comment_count>16</comment_count>
      <attachid>388818</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-26 20:38:55 -0800</bug_when>
    <thetext>Comment on attachment 388818
Patch

Clearing flags on attachment: 388818

Committed r255135: &lt;https://trac.webkit.org/changeset/255135&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611273</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-26 20:38:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611274</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-26 20:39:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/58908146&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388082</attachid>
            <date>2020-01-17 13:23:17 -0800</date>
            <delta_ts>2020-01-22 10:26:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206438-20200117132316.patch</filename>
            <type>text/plain</type>
            <size>10229</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1MTZhZmMxY2MwNjdkNDkx
NTM0ODIyY2FiNTVkODg5YjM5NGQ3MDIuLjU1MjAxMGU4MzEzMTQ2NDQ2NmIyNzI2Y2Q4MmZkYWEw
ODcwOGZjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDEtMTcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGcmVxdWVudCBzeW5jIEJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudC9CYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBDIG9uIHJlZGRp
dC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZy
ZXF1ZW50IHN5bmMgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50L0JhY2tGb3J3YXJkRm9yd2FyZExp
c3RDb3VudCBJUEMgb24gcmVkZGl0LmNvbS4gV2hlbiBzY3JvbGxpbmcgb24gcmVkZGl0LmNvbSwK
KyAgICAgICAgeW91IGZyZXF1ZW50bHkgc2VlIDIgY29uc2VjdXRpdmUgc3luYyBJUENzIChXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCB0aGVuIFdlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KQorICAgICAgICBmcm9tIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MgdG8gdGhlIFVJUHJvY2Vzcy4gVGhvc2UgYXJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIFRo
aXMgaGFwcGVucyBldmVyeSB0aW1lIHRoZSBzY3JpcHQgb24gdGhlIHBhZ2UgYWNjZXNzZXMKKyAg
ICAgICAgaGlzdG9yeS5sZW5ndGgsIHdoaWNoIGlzIHVuZm9ydHVuYXRlLCBzaW5jZSB0aGlzIGhp
c3RvcnkgbGVuZ3RoIHJhcmVseSBjaGFuZ2VzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlz
c3VlLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAxLiBNZXJnZSBC
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQgLyBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBD
cyBpbnRvIGEgc2luZ2xlIEJhY2tGb3J3YXJkTGlzdENvdW50cyBJUEMgd2hpY2ggcmV0dXJucyBi
b3RoCisgICAgICAgICAgIHRoZSBiYWNrICYgZm9yd2FyZCBjb3VudHMsIHNpbmNlIHdlIG9mdGVu
IG5lZWQgYm90aCAoZS5nLiB3aGVuIGFjY2Vzc2luZyBoaXN0b3J5Lmxlbmd0aCkgYW5kIHNpbmNl
IGdldHRpbmdzIHRob3NlIGNvdW50cyBpcworICAgICAgICAgICB2ZXJ5IGNoZWFwIGNvbXBhcmVk
IHRvIHRoZSBjb3N0IG9mIGEgc3luYyBJUEMuCisgICAgICAgIDIuIENhY2hlIHRob3NlIGNvdW50
cyBpbiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eSBhbmQgYmxvdyBhd2F5IHRoZSBjYWNoZWQgY291
bnRzIHdoZW5ldmVyIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBjaGFuZ2VzLiBJbiB0aGUKKyAgICAg
ICAgICAgY29tbW9uIGNhc2UgKHdoZXJlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCByYXJlbHkgY2hh
bmdlcyksIHdlIG5vdyBzZWUgYSBzaW5nbGUgc3luYyBJUEMgaW5zdGVhZCBvZiBtYW55ICh2ZXJp
ZmllZCBvbiByZWRkaXQuY29tKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG1lcmVseSBhIHBl
cmZvcm1hbmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50
c0lmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpjbGVhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5Lmg6CisKIDIwMjAtMDEtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFRlc3RXZWJLaXRBUEkuQXN5bmNGdW5jdGlvbi5Qcm9taXNl
IHRpbWVzIG91dCBvbiBzbG93ZXIgbWFjaGluZXMgaW4gZGVidWcgYnVpbGRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTIyZjIxMjllZWQ4ZjQwYmRkYWRl
ODVjYTE0MWMyODgxMDFkMTA1ZC4uOWIwOWZlY2IzZWU0NWRlY2FkZjEyNTczNTNiYjc2ZGZiMTQw
MGVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02MDcz
LDE0ICs2MDczLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgo
aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZExpc3RDb3VudHMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRMaXN0Q291bnRzRGVsYXllZFJlcGx5
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9iYWNrRm9y
d2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNr
Rm9yd2FyZEZvcndhcmRMaXN0Q291bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9iYWNrRm9y
d2FyZExpc3QtPmZvcndhcmRMaXN0Q291bnQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9i
YWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmZvcndh
cmRMaXN0Q291bnQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wb3NpdGlvbldhc0Nh
bmNlbGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmM0OWVj
ZGNkODlkMTEzZTVmZGM3YzViOGIwYmUwODZkYTExZDIzMy4uODU0ZGM3MTM4YzFlOWRlYWI0ZTMz
NjMxMWQyZDBhMjA2Njg1ODE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTE4ODcsOCArMTg4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiYWNrRm9yd2FyZEFk
ZEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRH
b1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZv
aWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiYpPiYm
KTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkQmFja0xpc3RDb3VudChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQzMl90KT4mJik7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYpOworICAgIHZvaWQgYmFja0Zvcndh
cmRMaXN0Q291bnRzKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkTGlzdENvdW50
c0RlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkQ2xlYXIoKTsKIAogICAgIC8v
IFVuZG8gbWFuYWdlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDNhNzQ2MDExZWE4ZGE4ZWU4Y2NhZjdiNzdmOTU0YjAwNzc4
M2MzNDIuLjhlYjM4YmJhY2FlZjVhNjZkNzIyMmJlY2I1ZjZhNDRkN2M3OTcxMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIy
Niw4ICsyMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIEJhY2tGb3J3YXJk
QWRkSXRlbShzdHJ1Y3QgV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgaXRlbVN0YXRl
KQogICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIgaXRlbUlEKSAtPiAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgU3luY2hyb25vdXMKICAgICBCYWNrRm9yd2FyZEl0ZW1B
dEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEKSBTeW5jaHJvbm91cwotICAgIEJhY2tGb3J3YXJkQmFj
a0xpc3RDb3VudCgpIC0+ICh1aW50MzJfdCBjb3VudCkgU3luY2hyb25vdXMKLSAgICBCYWNrRm9y
d2FyZEZvcndhcmRMaXN0Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpIFN5bmNocm9ub3VzCisg
ICAgQmFja0ZvcndhcmRMaXN0Q291bnRzKCkgLT4gKHVpbnQzMl90IGJhY2tMaXN0Q291bnQsIHVp
bnQzMl90IGZvcndhcmRMaXN0Q291bnQpIFN5bmNocm9ub3VzCiAgICAgQmFja0ZvcndhcmRDbGVh
cigpCiAgICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJkQ2FjaGUpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA5MTc0ZmUxZjk5YzJmYTUzYjkzZDdmOTJkZGUy
ZGYxZGFiZTQ1NmJlLi44NWZiNzYzOTk4NmVkN2E4NDU0ZjVlODljYzgyY2Q5NzIwYTM3NTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpCiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxyZWFk
eSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3RpbmdJ
dGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMg
fHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwogICAgIGlkVG9IaXN0
b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkpOworICAgIGNsZWFyQ2FjaGVkTGlz
dENvdW50cygpOwogfQogCiBzdGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQo
SGlzdG9yeUl0ZW0mIGl0ZW0pCkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIExPRyhCYWNrRm9yd2FyZCwg
IihCYWNrL0ZvcndhcmQpIFdlYlByb2Nlc3MgcGlkICVpIHNldHRpbmcgaXRlbSAlcCBmb3IgaWQg
JXMgd2l0aCB1cmwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIGl0ZW0ucHRyKCksIGl0ZW0t
PmlkZW50aWZpZXIoKS5sb2dTdHJpbmcoKSwgaXRlbS0+dXJsU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgY2xlYXJDYWNoZWRMaXN0Q291bnRzKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZShpdGVtLmdldCgpKSkpOwogfQogCkBAIC0xMDUsNiArMTA3LDcgQEAgdm9pZCBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNsZWFyQ2FjaGVkTGlzdENvdW50cygp
OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwog
ICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRH
b1RvSXRlbShpdGVtLmlkZW50aWZpZXIoKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tG
b3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBtX3Bh
Z2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+bWFpbldlYkZy
YW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwpAQCAtMTMwLDExICsxMzMs
OCBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCgpIGNv
bnN0CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdW5zaWduZWQg
YmFja0xpc3RDb3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zv
cndhcmRCYWNrTGlzdENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5pZGVudGlm
aWVyKCkpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBiYWNrTGlzdENvdW50Owor
ICAgIGNhY2hlTGlzdENvdW50c0lmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuICpjYWNoZWRCYWNr
TGlzdENvdW50OwogfQogCiB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2Fy
ZExpc3RDb3VudCgpIGNvbnN0CkBAIC0xNDIsMjEgKzE0MiwzOCBAQCB1bnNpZ25lZCBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgY2FjaGVMaXN0Q291bnRzSWZOZWNlc3Nhcnko
KTsKKyAgICByZXR1cm4gKmNhY2hlZEZvcndhcmRMaXN0Q291bnQ7Cit9CisKK3ZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50c0lmTmVjZXNzYXJ5KCkgY29uc3QKK3sK
KyAgICBpZiAoY2FjaGVkQmFja0xpc3RDb3VudCAmJiBjYWNoZWRGb3J3YXJkTGlzdENvdW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKICAgICB1
bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291
bnQpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSkpCi0gICAgICAgIHJldHVybiAwOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkTGlzdENvdW50cygpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHM6OlJlcGx5KGJhY2tMaXN0Q291bnQs
IGZvcndhcmRMaXN0Q291bnQpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgY2FjaGVkQmFj
a0xpc3RDb3VudCA9IGJhY2tMaXN0Q291bnQ7CisgICAgY2FjaGVkRm9yd2FyZExpc3RDb3VudCA9
IGZvcndhcmRMaXN0Q291bnQ7Cit9CiAKLSAgICByZXR1cm4gZm9yd2FyZExpc3RDb3VudDsKK3Zv
aWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cygpCit7Cisg
ICAgY2FjaGVkQmFja0xpc3RDb3VudCA9IFdURjo6bnVsbG9wdDsKKyAgICBjYWNoZWRGb3J3YXJk
TGlzdENvdW50ID0gV1RGOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpjbG9zZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgbV9wYWdlID0gbnVsbHB0
cjsKKyAgICBjbGVhckNhY2hlZExpc3RDb3VudHMoKTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6Y2xlYXIoKQogeworICAgIGNsZWFyQ2FjaGVkTGlzdENvdW50cygpOwogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZENsZWFyKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBkMWJhYWRiOTFjNTU4NjFiMTU0M2I5NzE3
NjQ4NjJiNWQyMjM5Nzc1Li4yMzJhZGM4ZjQ4OTdjNmJiYTQ1MTM3Y2ZkZTkxNTEwNzlmM2UwMjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTYyLDEwICs2MiwxNCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBvdmVycmlkZTsK
ICAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdW5zaWdu
ZWQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2FjaGVMaXN0
Q291bnRzSWZOZWNlc3NhcnkoKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyQ2FjaGVkTGlzdENvdW50
cygpOwogCiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZSogbV9wYWdl
OworICAgIG11dGFibGUgT3B0aW9uYWw8dW5zaWduZWQ+IGNhY2hlZEJhY2tMaXN0Q291bnQ7Cisg
ICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVkRm9yd2FyZExpc3RDb3VudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388435</attachid>
            <date>2020-01-22 10:26:13 -0800</date>
            <delta_ts>2020-01-22 10:38:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206438-20200122102613.patch</filename>
            <type>text/plain</type>
            <size>22544</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMzU1ZTc4MDExOGE5ODgx
ZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLmQ4Zjg3OWY3ODdhOGFiNTFhMGRkY2RlNGQ3ZGUzYTg2
NjEzMjMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDEtMjIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGcmVxdWVudCBzeW5jIEJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudC9CYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBDIG9uIHJlZGRp
dC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZy
ZXF1ZW50IHN5bmMgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50L0JhY2tGb3J3YXJkRm9yd2FyZExp
c3RDb3VudCBJUEMgb24gcmVkZGl0LmNvbS4gV2hlbiBzY3JvbGxpbmcgb24gcmVkZGl0LmNvbSwK
KyAgICAgICAgeW91IGZyZXF1ZW50bHkgc2VlIDIgY29uc2VjdXRpdmUgc3luYyBJUENzIChXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCB0aGVuIFdlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KQorICAgICAgICBmcm9tIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MgdG8gdGhlIFVJUHJvY2Vzcy4gVGhvc2UgYXJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIFRo
aXMgaGFwcGVucyBldmVyeSB0aW1lIHRoZSBzY3JpcHQgb24gdGhlIHBhZ2UgYWNjZXNzZXMKKyAg
ICAgICAgaGlzdG9yeS5sZW5ndGgsIHdoaWNoIGlzIHVuZm9ydHVuYXRlLCBzaW5jZSB0aGlzIGhp
c3RvcnkgbGVuZ3RoIHJhcmVseSBjaGFuZ2VzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlz
c3VlLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAxLiBNZXJnZSBC
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQgLyBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBD
cyBpbnRvIGEgc2luZ2xlIEJhY2tGb3J3YXJkTGlzdENvdW50cyBJUEMgd2hpY2ggcmV0dXJucyBi
b3RoCisgICAgICAgICAgIHRoZSBiYWNrICYgZm9yd2FyZCBjb3VudHMsIHNpbmNlIHdlIG9mdGVu
IG5lZWQgYm90aCAoZS5nLiB3aGVuIGFjY2Vzc2luZyBoaXN0b3J5Lmxlbmd0aCkgYW5kIHNpbmNl
IGdldHRpbmdzIHRob3NlIGNvdW50cyBpcworICAgICAgICAgICB2ZXJ5IGNoZWFwIGNvbXBhcmVk
IHRvIHRoZSBjb3N0IG9mIGEgc3luYyBJUEMuCisgICAgICAgIDIuIENhY2hlIHRob3NlIGNvdW50
cyBpbiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eSBhbmQgYmxvdyBhd2F5IHRoZSBjYWNoZWQgY291
bnRzIHdoZW5ldmVyIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBjaGFuZ2VzLiBJbiB0aGUKKyAgICAg
ICAgICAgY29tbW9uIGNhc2UgKHdoZXJlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCByYXJlbHkgY2hh
bmdlcyksIHdlIG5vdyBzZWUgYSBzaW5nbGUgc3luYyBJUEMgaW5zdGVhZCBvZiBtYW55ICh2ZXJp
ZmllZCBvbiByZWRkaXQuY29tKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG1lcmVseSBhIHBl
cmZvcm1hbmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50
c0lmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpjbGVhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5Lmg6CisKIDIwMjAtMDEtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbSVBDIEhhcmRlbmluZ10gT25seSBwcm9jZXNzIE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2VzcyBtZXNzYWdlcyB3aGVuIHNlbnQgYnkgdGhlIFVJUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDc1YzhkMDVkNGZjYzhmYjc1MWE1MjY5ZGI2MWIzMDgzMmMzNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMgeworICAgIHVpbnQzMl90IGJhY2tDb3VudCB7IDAgfTsKKyAgICB1aW50MzJfdCBmb3J3YXJk
Q291bnQgeyAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGJhY2tDb3VudDsKKyAgICAgICAgZW5jb2Rl
ciA8PCBmb3J3YXJkQ291bnQ7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBiYWNrQ291bnQ7CisgICAgICAgIGRlY29kZXIgPj4g
YmFja0NvdW50OworICAgICAgICBpZiAoIWJhY2tDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZvcndhcmRDb3VudDsK
KyAgICAgICAgZGVjb2RlciA+PiBmb3J3YXJkQ291bnQ7CisgICAgICAgIGlmICghZm9yd2FyZENv
dW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4g
V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsgKmJhY2tDb3VudCwgKmZvcndhcmRDb3VudCB9Owor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggMzdmNGNiZDk0MjE1NGNhYmFmNzMx
YzQ3OWY3NzBmZTk5Yzg5ZTZiMS4uNTQyZGM4Yzc1YjcyNmFkMDA0MjM5YWZhNjBlYWVhZjhkY2Zh
N2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNl
c3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKKyNpbmNsdWRl
ICJXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KQEAgLTI3NCw2ICsyNzUsMTEgQEAgdW5z
aWduZWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9wYWdlICYmIG1fY3VycmVudEluZGV4ID8gbV9lbnRyaWVzLnNpemUoKSAtICgqbV9j
dXJyZW50SW5kZXggKyAxKSA6IDA7CiB9CiAKK1dlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNvdW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkJhY2tGb3J3
YXJkTGlzdENvdW50cyB7IGJhY2tMaXN0Q291bnQoKSwgZm9yd2FyZExpc3RDb3VudCgpIH07Cit9
CisKIFJlZjxBUEk6OkFycmF5PiBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gYmFja0xpc3RBc0FQSUFycmF5V2l0aExpbWl0KGJhY2tMaXN0Q291bnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCmluZGV4
IGE2MTM1Njk4NjI4YTYwYjIzYmJhOGM4NmE1NmVjNjRiMDc4Y2YyNTMuLmRmMWIxODUxZDQyZTZi
MjQyOGE3Y2M4MTM4ZWM2YWU3MGJmMmI4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkTGlzdC5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlOworc3RydWN0IFdlYkJhY2tGb3J3YXJk
TGlzdENvdW50czsKIAogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0IDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0PiB7CiBwdWJsaWM6CkBA
IC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGJhY2tMaXN0Q291bnQoKSBj
b25zdDsKICAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CisgICAgV2ViQmFj
a0ZvcndhcmRMaXN0Q291bnRzIGNvdW50cygpIGNvbnN0OwogCiAgICAgUmVmPEFQSTo6QXJyYXk+
IGJhY2tMaXN0KCkgY29uc3Q7CiAgICAgUmVmPEFQSTo6QXJyYXk+IGZvcndhcmRMaXN0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ZjFhM2Vh
MGI0NWQzMzlmYzgwMjkwNDZkZTY4OTU1MzAyMDhkYjVkLi5iN2VhNWMwYWJhMGM4MDgwMjU4NDUw
OTVmNTFiOTk3ZTczMmE5ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTk2LDYgKzk2LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3QuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCIKICNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCkBAIC02MDczLDE0ICs2MDc0
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBp
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQmFja0xp
c3RDb3VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZExpc3RDb3VudHMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRMaXN0Q291bnRzRGVsYXllZFJlcGx5JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9iYWNrRm9yd2FyZExpc3Qt
PmJhY2tMaXN0Q291bnQoKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEZv
cndhcmRMaXN0Q291bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9iYWNrRm9yd2FyZExpc3Qt
PmZvcndhcmRMaXN0Q291bnQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9iYWNrRm9yd2Fy
ZExpc3QtPmNvdW50cygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXBvc2l0aW9uV2Fz
Q2FuY2VsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0Nzdj
ZDNmZjU2NzBhNDZjYTM0NGMwNmE4NTZkOTI4ZjU1Mzc0NjNiLi4xMGFkMmQ5YzFlMjEzYjJmZThh
ZTU5NWU2NWUxM2YyY2YwNzI5NDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMzA4LDYgKzMwOCw3IEBAIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eTsKIGNsYXNzIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlcjsKIAog
c3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CitzdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
Owogc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBz
dHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKQEAgLTE4ODgsOCArMTg4OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBiYWNrRm9yd2FyZEFkZEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
JiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQz
Ml90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXI+JiYpPiYmKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkQmFja0xp
c3RDb3VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQzMl90KT4mJik7Ci0gICAgdm9pZCBi
YWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50MzJf
dCk+JiYpOworICAgIHZvaWQgYmFja0ZvcndhcmRMaXN0Q291bnRzKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkTGlzdENvdW50c0RlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGJh
Y2tGb3J3YXJkQ2xlYXIoKTsKIAogICAgIC8vIFVuZG8gbWFuYWdlbWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDNhNzQ2MDEx
ZWE4ZGE4ZWU4Y2NhZjdiNzdmOTU0YjAwNzc4M2MzNDIuLmEwOGY4OTg1ZmJkZWU0Zjc3MjZjM2Yz
ZTQ3YzIzYjZmOGE1NTY0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyNiw4ICsyMjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIEJhY2tGb3J3YXJkQWRkSXRlbShzdHJ1Y3QgV2ViS2l0OjpCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUgaXRlbVN0YXRlKQogICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0oc3Ry
dWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaXRlbUlEKSAtPiAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgU3luY2hy
b25vdXMKICAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAo
T3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEKSBTeW5j
aHJvbm91cwotICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpIC0+ICh1aW50MzJfdCBjb3Vu
dCkgU3luY2hyb25vdXMKLSAgICBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSAtPiAodWlu
dDMyX3QgY291bnQpIFN5bmNocm9ub3VzCisgICAgQmFja0ZvcndhcmRMaXN0Q291bnRzKCkgLT4g
KHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBjb3VudHMpIFN5bmNocm9u
b3VzCiAgICAgQmFja0ZvcndhcmRDbGVhcigpCiAgICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9v
bCBpbkJhY2tGb3J3YXJkQ2FjaGUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhZGVhNTg1MGY4ODY0M2FmNzBmODk1MDMxYjM4NjE1
NmIyZTQzZjguLjVhYjIyMDU2Zjc0YjE5YTc3NTEyZTAwZTQyZDk4YzhmYTUyNzA5NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTUx
LDYgKzk1MSw3IEBACiAJCTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCRUI2REQyMkZCQjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmgg
Ki87IH07CiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UuaCAqLzsgfTsKIAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgg
Ki87IH07CisJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsg
fTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZE
RjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICov
OyB9OwogCQk0NkY3N0Q4MDIzQkU2M0JFMDA5MEI1QTcgLyogRGVwZW5kZW5jeVByb2Nlc3NBc3Nl
cnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
Rjc3RDdFMjNCRTYzQjEwMDkwQjVBNyAvKiBEZXBlbmRlbmN5UHJvY2Vzc0Fzc2VydGlvbi5oICov
OyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5
QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07
CkBAIC0yMTE5LDkgKzIxMjAsOSBAQAogCQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0JB
RjM1NjIzQTJDQzE3MDA0NDI1N0UgLyogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QkFGMzU3MjNBMkNDMTkwMDQ0MjU3RSAvKiBSZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UxOUVGODIzRDQwMUYwMDA5NEZGQjQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VSZWNl
aXZlci5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UxOUVGOTIzRDQwMUYwMDA5NEZG
QjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaDsgcGF0
aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3RTE5RUZBMjNENDAxRjAwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXNSZXBsaWVzLmg7IHBhdGggPSBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdFMTlFRjgyM0Q0MDFGMDAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UxOUVGOTIzRDQwMUYwMDA5NEZGQjQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDdFMTlFRkEyM0Q0MDFGMDAwOTRGRkI0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtp
dC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
IjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogZW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBlbjsgcGF0aCA9IGVuLmxwcm9qL0luZm9Q
bGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRTk3RDc0QzIwMEU4
RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93
c2luZ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5MCw2ICszNDkxLDcg
QEAKIAkJNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTIyMkZCQjIxQTAwMjY5ODY3
IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkMzOTIyODIzMTZFQzREMDA4RUVEOUIgLyogV2ViUGFnZVByb3h5SWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
QmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5
MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGNzdEN0UyM0JFNjNCMTAwOTBCNUE3IC8qIERl
cGVuZGVuY3lQcm9jZXNzQXNzZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlcGVuZGVuY3lQcm9jZXNzQXNzZXJ0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NzYxLDYgKzU3NjMsNyBAQAogCQkJCTFBQzEzMzY2MTg1NjVCNTcwMEYzRUMwNSAv
KiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQwNTRBMThCODY2RkYwMDIyQzM4QiAvKiBWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAqLywKIAkJCQkyNjg0MDU0MjE4Qjg1QTYzMDAyMkMz
OEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oICovLAorCQkJCTQ2Q0UzQjEwMjNE
OEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLywKIAkJCQk1MThE
MkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8sCiAJ
CQkJNTE4RDJDQUMxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAq
LywKIAkJCQlCQ0Y1MDcyNjEyNDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmgg
Ki8sCkBAIC0xMDU3MSw2ICsxMDU3NCw3IEBACiAJCQkJMUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJC
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzJCQTFFMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJC
YWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2
QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
OEQyQ0FFMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RUQxMUY0MTVENjgwMDE2RkE0MiAv
KiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmNwcAppbmRleCA5MTc0ZmUxZjk5YzJmYTUzYjkzZDdmOTJkZGUyZGYxZGFiZTQ1NmJl
Li4yMDA5ZjUwOGI3NzFjY2Y1NDczMWZhMjdiMGQ5ZWE5YWZhNmE1ZmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpCiAg
ICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxyZWFkeSBleGlzdCBpbiBv
dXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3RpbmdJdGVtLCBvdmVyd3Jp
dGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0
b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwogICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgp
LnNldChpdGVtSUQsIGl0ZW0ucHRyKCkpOworICAgIGNsZWFyQ2FjaGVkTGlzdENvdW50cygpOwog
fQogCiBzdGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQoSGlzdG9yeUl0ZW0m
IGl0ZW0pCkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFk
ZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0Zvcndh
cmQpIFdlYlByb2Nlc3MgcGlkICVpIHNldHRpbmcgaXRlbSAlcCBmb3IgaWQgJXMgd2l0aCB1cmwg
JXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIGl0ZW0ucHRyKCksIGl0ZW0tPmlkZW50aWZpZXIo
KS5sb2dTdHJpbmcoKSwgaXRlbS0+dXJsU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY2xl
YXJDYWNoZWRMaXN0Q291bnRzKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShpdGVt
LmdldCgpKSkpOwogfQogCkBAIC0xMDUsNiArMTA3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGNsZWFyQ2FjaGVkTGlzdENvdW50cygpOwogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgIG1fcGFnZS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbShpdGVt
LmlkZW50aWZpZXIoKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0
ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBtX3BhZ2UtPnNhbmRib3hF
eHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+bWFpbldlYkZyYW1lKCksIFdURk1v
dmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwpAQCAtMTI3LDM2ICsxMzAsMzkgQEAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50IGl0
ZW1JbmRleCkKIAogdW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291
bnQoKSBjb25zdAogewotICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHVuc2lnbmVkIGJhY2tMaXN0Q291bnQgPSAwOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudDo6UmVwbHkoYmFja0xpc3RDb3VudCksIG1fcGFn
ZS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gYmFja0xp
c3RDb3VudDsKKyAgICByZXR1cm4gbV9wYWdlID8gY2FjaGVMaXN0Q291bnRzSWZOZWNlc3Nhcnko
KS5iYWNrQ291bnQgOiAwOwogfQogCiB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBtX3BhZ2UgPyBjYWNoZUxpc3RDb3VudHNJZk5lY2Vzc2FyeSgp
LmZvcndhcmRDb3VudCA6IDA7Cit9CiAKLSAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50ID0g
MDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2Fy
ZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRM
aXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpLCBtX3BhZ2UtPmlkZW50aWZpZXIoKSkp
Ci0gICAgICAgIHJldHVybiAwOworY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJiBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6Y2FjaGVMaXN0Q291bnRzSWZOZWNlc3NhcnkoKSBjb25zdAor
eworICAgIGlmICghbV9jYWNoZWRCYWNrTGlzdENvdW50cykgeworICAgICAgICBXZWJCYWNrRm9y
d2FyZExpc3RDb3VudHMgYmFja0xpc3RDb3VudHM7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkTGlzdENvdW50cygpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpCYWNrRm9yd2FyZExpc3RDb3VudHM6OlJlcGx5KGJhY2tMaXN0Q291bnRzKSwgbV9wYWdlLT5p
ZGVudGlmaWVyKCkpOworICAgICAgICBtX2NhY2hlZEJhY2tMaXN0Q291bnRzID0gV1RGTW92ZShi
YWNrTGlzdENvdW50cyk7CisgICAgfQorICAgIHJldHVybiAqbV9jYWNoZWRCYWNrTGlzdENvdW50
czsKK30KIAotICAgIHJldHVybiBmb3J3YXJkTGlzdENvdW50Owordm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6Y2xlYXJDYWNoZWRMaXN0Q291bnRzKCkKK3sKKyAgICBtX2NhY2hlZEJhY2tM
aXN0Q291bnRzID0gV1RGOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpjbG9zZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgbV9wYWdlID0gbnVsbHB0
cjsKKyAgICBjbGVhckNhY2hlZExpc3RDb3VudHMoKTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6Y2xlYXIoKQogeworICAgIGNsZWFyQ2FjaGVkTGlzdENvdW50cygpOwogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZENsZWFyKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBkMWJhYWRiOTFjNTU4NjFiMTU0M2I5NzE3
NjQ4NjJiNWQyMjM5Nzc1Li44OTZjODVjN2UzZTQyMjk2MTFjOWQ5ZGY5YjliZGEwNzE3Y2RiOGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC02MiwxMCArNjMsMTMgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW1BdEluZGV4KGludCkgb3Zl
cnJpZGU7CiAgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBX
ZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmIGNhY2hlTGlzdENvdW50c0lmTmVjZXNzYXJ5KCkgY29u
c3Q7CisgICAgdm9pZCBjbGVhckNhY2hlZExpc3RDb3VudHMoKTsKIAogICAgIHZvaWQgY2xvc2Uo
KSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
PFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cz4gbV9jYWNoZWRCYWNrTGlzdENvdW50czsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hj
c2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZSBiL1dlYktpdC54Y3dvcmtz
cGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUKaW5kZXggZTFj
OTc0Y2FmM2IxYWY1ZjZmMGNmZTU3NzA0YTU2N2UyODNjNTA5ZC4uYjc1ZjRiZDE5OWQ4YWU1NmVi
ZmYzNzdjOGYyMjgxMzFhOGViMzI3YiAxMDA2NDQKLS0tIGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hj
c2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKKysrIGIvV2ViS2l0Lnhj
d29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKQEAg
LTU3LDcgKzU3LDcgQEAKICAgICAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKICAgICAgICAg
ICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKICAgICAgICAgICAgICAgIEJs
dWVwcmludElkZW50aWZpZXIgPSAiRkIzOUQwRDAxMjAwRjBFMzAwMDg4RTY5IgotICAgICAgICAg
ICAgICAgQnVpbGRhYmxlTmFtZSA9ICJsaWJBTkdMRS1zaGFyZWQuZHlsaWIiCisgICAgICAgICAg
ICAgICBCdWlsZGFibGVOYW1lID0gImxpYkFOR0xFLmEiCiAgICAgICAgICAgICAgICBCbHVlcHJp
bnROYW1lID0gIkFOR0xFIgogICAgICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJj
b250YWluZXI6U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qIj4KICAgICAg
ICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388436</attachid>
            <date>2020-01-22 10:38:35 -0800</date>
            <delta_ts>2020-01-22 10:41:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206438-20200122103835.patch</filename>
            <type>text/plain</type>
            <size>30271</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMzU1ZTc4MDExOGE5ODgx
ZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLmQ4Zjg3OWY3ODdhOGFiNTFhMGRkY2RlNGQ3ZGUzYTg2
NjEzMjMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDEtMjIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGcmVxdWVudCBzeW5jIEJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudC9CYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBDIG9uIHJlZGRp
dC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZy
ZXF1ZW50IHN5bmMgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50L0JhY2tGb3J3YXJkRm9yd2FyZExp
c3RDb3VudCBJUEMgb24gcmVkZGl0LmNvbS4gV2hlbiBzY3JvbGxpbmcgb24gcmVkZGl0LmNvbSwK
KyAgICAgICAgeW91IGZyZXF1ZW50bHkgc2VlIDIgY29uc2VjdXRpdmUgc3luYyBJUENzIChXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCB0aGVuIFdlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KQorICAgICAgICBmcm9tIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MgdG8gdGhlIFVJUHJvY2Vzcy4gVGhvc2UgYXJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIFRo
aXMgaGFwcGVucyBldmVyeSB0aW1lIHRoZSBzY3JpcHQgb24gdGhlIHBhZ2UgYWNjZXNzZXMKKyAg
ICAgICAgaGlzdG9yeS5sZW5ndGgsIHdoaWNoIGlzIHVuZm9ydHVuYXRlLCBzaW5jZSB0aGlzIGhp
c3RvcnkgbGVuZ3RoIHJhcmVseSBjaGFuZ2VzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlz
c3VlLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAxLiBNZXJnZSBC
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQgLyBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBD
cyBpbnRvIGEgc2luZ2xlIEJhY2tGb3J3YXJkTGlzdENvdW50cyBJUEMgd2hpY2ggcmV0dXJucyBi
b3RoCisgICAgICAgICAgIHRoZSBiYWNrICYgZm9yd2FyZCBjb3VudHMsIHNpbmNlIHdlIG9mdGVu
IG5lZWQgYm90aCAoZS5nLiB3aGVuIGFjY2Vzc2luZyBoaXN0b3J5Lmxlbmd0aCkgYW5kIHNpbmNl
IGdldHRpbmdzIHRob3NlIGNvdW50cyBpcworICAgICAgICAgICB2ZXJ5IGNoZWFwIGNvbXBhcmVk
IHRvIHRoZSBjb3N0IG9mIGEgc3luYyBJUEMuCisgICAgICAgIDIuIENhY2hlIHRob3NlIGNvdW50
cyBpbiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eSBhbmQgYmxvdyBhd2F5IHRoZSBjYWNoZWQgY291
bnRzIHdoZW5ldmVyIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBjaGFuZ2VzLiBJbiB0aGUKKyAgICAg
ICAgICAgY29tbW9uIGNhc2UgKHdoZXJlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCByYXJlbHkgY2hh
bmdlcyksIHdlIG5vdyBzZWUgYSBzaW5nbGUgc3luYyBJUEMgaW5zdGVhZCBvZiBtYW55ICh2ZXJp
ZmllZCBvbiByZWRkaXQuY29tKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG1lcmVseSBhIHBl
cmZvcm1hbmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50
c0lmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpjbGVhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5Lmg6CisKIDIwMjAtMDEtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbSVBDIEhhcmRlbmluZ10gT25seSBwcm9jZXNzIE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2VzcyBtZXNzYWdlcyB3aGVuIHNlbnQgYnkgdGhlIFVJUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDc1YzhkMDVkNGZjYzhmYjc1MWE1MjY5ZGI2MWIzMDgzMmMzNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMgeworICAgIHVpbnQzMl90IGJhY2tDb3VudCB7IDAgfTsKKyAgICB1aW50MzJfdCBmb3J3YXJk
Q291bnQgeyAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGJhY2tDb3VudDsKKyAgICAgICAgZW5jb2Rl
ciA8PCBmb3J3YXJkQ291bnQ7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBiYWNrQ291bnQ7CisgICAgICAgIGRlY29kZXIgPj4g
YmFja0NvdW50OworICAgICAgICBpZiAoIWJhY2tDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZvcndhcmRDb3VudDsK
KyAgICAgICAgZGVjb2RlciA+PiBmb3J3YXJkQ291bnQ7CisgICAgICAgIGlmICghZm9yd2FyZENv
dW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4g
V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsgKmJhY2tDb3VudCwgKmZvcndhcmRDb3VudCB9Owor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDliYTlhNDQ0MzIyMDFmNWJm
YjJiYzlmYTM3NGE2ZGNiZmZiNTI3YTQuLjg5MjIzZDg1ODNhMmIxZWE4ZTljOWMwMWUyNDM1MjUx
YTUyMDg4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJiBwYXJhbWV0ZQog
ICAgIG1fcGFnZS5zdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bV93ZWJQYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCi12b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuYmFja0ZvcndhcmRHb1RvSXRl
bVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAppbmRleCBlNmI0NzM1NTI0N2M2NDZjM2IwODk3NjZjODg3MmVlY2I5MDE3ZGFh
Li5jYzk3MGM1MDE1NmI5ODg0MTgxZTdlOGU0ZTIyZGMxYTE0YjI5M2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxv
YWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1
Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
KTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYpPiYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAzN2Y0Y2JkOTQyMTU0Y2FiYWY3
MzFjNDc5Zjc3MGZlOTljODllNmIxLi41NDJkYzhjNzViNzI2YWQwMDQyMzlhZmE2MGVhZWFmOGRj
ZmE3ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlz
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgorI2luY2x1
ZGUgIldlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgpAQCAtMjc0LDYgKzI3NSwxMSBAQCB1
bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogICAg
IHJldHVybiBtX3BhZ2UgJiYgbV9jdXJyZW50SW5kZXggPyBtX2VudHJpZXMuc2l6ZSgpIC0gKCpt
X2N1cnJlbnRJbmRleCArIDEpIDogMDsKIH0KIAorV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIFdl
YkJhY2tGb3J3YXJkTGlzdDo6Y291bnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzIHsgYmFja0xpc3RDb3VudCgpLCBmb3J3YXJkTGlzdENvdW50KCkgfTsK
K30KKwogUmVmPEFQSTo6QXJyYXk+IFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3QoKSBjb25z
dAogewogICAgIHJldHVybiBiYWNrTGlzdEFzQVBJQXJyYXlXaXRoTGltaXQoYmFja0xpc3RDb3Vu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5k
ZXggYTYxMzU2OTg2MjhhNjBiMjNiYmE4Yzg2YTU2ZWM2NGIwNzhjZjI1My4uZGYxYjE4NTFkNDJl
NmIyNDI4YTdjYzgxMzhlYzZhZTcwYmYyYjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGU7CitzdHJ1Y3QgV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzOwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3Q+IHsKIHB1YmxpYzoK
QEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKKyAgICBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMgY291bnRzKCkgY29uc3Q7CiAKICAgICBSZWY8QVBJOjpBcnJh
eT4gYmFja0xpc3QoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gZm9yd2FyZExpc3QoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZmMWEz
ZWEwYjQ1ZDMzOWZjODAyOTA0NmRlNjg5NTUzMDIwOGRiNWQuLjA3NzYyYWMwN2ZmMTlhNzhiZjY2
ZThiOTgxYjY4ZmFlNzA5ZGI5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9u
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIgogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKQEAgLTYwNDEsMjggKzYw
NDIsMjggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBpdGVtU3RhdGUpCiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmFkZEl0
ZW0oV1RGTW92ZShpdGVtKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdv
VG9JdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIE9uIHByb2Nlc3Mgc3dhcCwgd2UgdGVs
bCB0aGUgcHJldmlvdXMgcHJvY2VzcyB0byBpZ25vcmUgdGhlIGxvYWQsIHdoaWNoIGNhdXNlcyBp
dCBzbyByZXN0b3JlIGl0cyBjdXJyZW50IGJhY2sgZm9yd2FyZCBpdGVtIHRvIGl0cyBwcmV2aW91
cwogICAgIC8vIHZhbHVlLiBTaW5jZSB0aGUgbG9hZCBpcyByZWFsbHkgZ29pbmcgb24gaW4gYSBu
ZXcgcHJvdmlzaW9uYWwgcHJvY2Vzcywgd2Ugd2FudCB0byBpZ25vcmUgc3VjaCByZXF1ZXN0cyBm
cm9tIHRoZSBjb21taXR0ZWQgcHJvY2Vzcy4KICAgICAvLyBBbnkgcmVhbCBuZXcgbG9hZCBpbiB0
aGUgY29tbWl0dGVkIHByb2Nlc3Mgd291bGQgaGF2ZSBjbGVhcmVkIG1fcHJvdmlzaW9uYWxQYWdl
LgogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIG1fYmFj
a0ZvcndhcmRMaXN0LT5jb3VudHMoKSk7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIGl0ZW1JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogaXRlbSA9IG1fYmFja0ZvcndhcmRM
aXN0LT5pdGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgbWF5YmVJbml0aWFsaXplU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCBVUkwoVVJMKCksIGl0ZW0tPnVybCgpKSwgaXRl
bS0+cmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAg
IG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbSgqaXRlbSk7Ci0gICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9iYWNrRm9yd2FyZExpc3QtPmNv
dW50cygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgo
aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYwNzMsMTQgKzYw
NzQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90
IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRCYWNr
TGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYmFja0ZvcndhcmRMaXN0LT5iYWNr
TGlzdENvdW50KCkpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRGb3J3YXJk
TGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkTGlzdENvdW50cyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHNEZWxheWVkUmVwbHkmJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX2JhY2tGb3J3YXJkTGlz
dC0+Zm9yd2FyZExpc3RDb3VudCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX2JhY2tGb3J3
YXJkTGlzdC0+Y291bnRzKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcG9zaXRpb25X
YXNDYW5jZWxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ3
N2NkM2ZmNTY3MGE0NmNhMzQ0YzA2YTg1NmQ5MjhmNTUzNzQ2M2IuLmQ5MzZlZmE0MDA1OGQ3NzM3
MTdmMGE5NzZhOTQ1MDM1YmExZjA5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5OwogY2xhc3MgV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyOwog
CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKK3N0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHM7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsK
IHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0OwpAQCAtMTU5Myw3ICsxNTk0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
KTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdyk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmln
YXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYp
OworICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKQEAgLTE4ODYsMTAgKzE4ODcsOSBAQCBwcml2YXRlOgog
CiAgICAgLy8gQmFjay9Gb3J3YXJkIGxpc3QgbWFuYWdlbWVudAogICAgIHZvaWQgYmFja0Zvcndh
cmRBZGRJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKLSAgICB2b2lkIGJhY2tGb3J3
YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKKyAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGJh
Y2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7Ci0g
ICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50MzJfdCk+JiYpOwotICAgIHZvaWQgYmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkTGlz
dENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHNEZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZENsZWFyKCk7CiAKICAgICAvLyBVbmRv
IG1hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAzYTc0NjAxMWVhOGRhOGVlOGNjYWY3Yjc3Zjk1NGIwMDc3ODNjMzQy
Li5hNmQ0YzYxNzNiMGZkNzVhNWY1MDdlNDRmNjBmN2RmZDE0ZjQzM2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMjQsMTAg
KzIyNCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIEJhY2tGb3J3YXJk
IG1lc3NhZ2VzCiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHN0cnVjdCBXZWJLaXQ6OkJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCi0gICAgQmFja0ZvcndhcmRHb1RvSXRlbShzdHJ1
Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpdGVtSUQpIC0+IChXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSBTeW5jaHJv
bm91cworICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgaXRlbUlEKSAtPiAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc3RydWN0IFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0Q291bnRzIGNvdW50cykgU3luY2hyb25vdXMKICAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4
KGludDMyX3QgaXRlbUluZGV4KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllcj4gaXRlbUlEKSBTeW5jaHJvbm91cwotICAgIEJhY2tGb3J3YXJkQmFja0xpc3RD
b3VudCgpIC0+ICh1aW50MzJfdCBjb3VudCkgU3luY2hyb25vdXMKLSAgICBCYWNrRm9yd2FyZEZv
cndhcmRMaXN0Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpIFN5bmNocm9ub3VzCisgICAgQmFj
a0ZvcndhcmRMaXN0Q291bnRzKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyBjb3VudHMpIFN5bmNocm9ub3VzCiAgICAgQmFja0ZvcndhcmRDbGVhcigpCiAgICAg
V2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJkQ2FjaGUpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhZGVhNTg1
MGY4ODY0M2FmNzBmODk1MDMxYjM4NjE1NmIyZTQzZjguLjVhYjIyMDU2Zjc0YjE5YTc3NTEyZTAw
ZTQyZDk4YzhmYTUyNzA5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTUxLDYgKzk1MSw3IEBACiAJCTQ2QkVCNkRGMjJGQkIxNkIw
MDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQyMkZCQjE2QjAwMjY5ODY3IC8qIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2
NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZDMzkyMjkyMzE2RUM0
RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CisJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2
QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkY3N0Q4MDIzQkU2M0JFMDA5MEI1QTcg
LyogRGVwZW5kZW5jeVByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Rjc3RDdFMjNCRTYzQjEwMDkwQjVBNyAvKiBEZXBlbmRl
bmN5UHJvY2Vzc0Fzc2VydGlvbi5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEg
LyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmggKi87IH07CkBAIC0yMTE5LDkgKzIxMjAsOSBAQAogCQkwN0I5M0ZG
NTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0JBRjM1NjIzQTJDQzE3MDA0NDI1N0UgLyogUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QkFGMzU3MjNBMkNDMTkwMDQ0MjU3RSAv
KiBSZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UxOUVG
ODIzRDQwMUYwMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwN0UxOUVGOTIzRDQwMUYwMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlTWVzc2FnZXMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3RTE5RUZBMjNENDAxRjAwMDk0
RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXNSZXBsaWVzLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFMTlFRjgyM0Q0MDFGMDAwOTRG
RkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UxOUVG
OTIzRDQwMUYwMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFMTlFRkEyM0Q0MDFG
MDAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzUmVwbGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVG
RTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFw
cEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQx
MTU4QzAyQUFDMDcgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBl
bjsgcGF0aCA9IGVuLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93c2luZ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzQ5MCw2ICszNDkxLDcgQEAKIAkJNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8q
IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCRUI2RTIyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzOTIyODIzMTZFQzREMDA4RUVE
OUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0UzQjEwMjNE
OEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGNzdE
N0UyM0JFNjNCMTAwOTBCNUE3IC8qIERlcGVuZGVuY3lQcm9jZXNzQXNzZXJ0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcGVuZGVuY3lQcm9jZXNzQXNzZXJ0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzYxLDYgKzU3NjMsNyBAQAogCQkJCTFB
QzEzMzY2MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQwNTRBMThC
ODY2RkYwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAqLywKIAkJ
CQkyNjg0MDU0MjE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
by5oICovLAorCQkJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaCAqLywKIAkJCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8sCiAJCQkJNTE4RDJDQUMxMkQ1MTUzQjAwM0JCOTNCIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKIAkJCQlCQ0Y1MDcyNjEyNDMyOUFBMDA1OTU1QUUg
LyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCkBAIC0xMDU3MSw2ICsxMDU3NCw3IEBACiAJCQkJ
MUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3Jp
cHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzJCQTFF
MTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEQyQ0FFMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAx
RUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
ODk3RUQxMUY0MTVENjgwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA5MTc0ZmUxZjk5YzJmYTUz
YjkzZDdmOTJkZGUyZGYxZGFiZTQ1NmJlLi4yNTU5YzQ0NGVhN2U4YTk0YTZkNGQyOTQzNTcxNmUz
NGM2YWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpCiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3Vs
ZCBub3QgYWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3Zlcndy
aXRlRXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3Rp
bmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwog
ICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkpOworICAgIGNs
ZWFyQ2FjaGVkTGlzdENvdW50cygpOwogfQogCiBzdGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0b3J5
SXRlbUNoYW5nZWQoSGlzdG9yeUl0ZW0mIGl0ZW0pCkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIExPRyhC
YWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYlByb2Nlc3MgcGlkICVpIHNldHRpbmcgaXRl
bSAlcCBmb3IgaWQgJXMgd2l0aCB1cmwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIGl0ZW0u
cHRyKCksIGl0ZW0tPmlkZW50aWZpZXIoKS5sb2dTdHJpbmcoKSwgaXRlbS0+dXJsU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgY2xlYXJDYWNoZWRMaXN0Q291bnRzKCk7CiAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZShpdGVtLmdldCgpKSkpOwogfQogCkBAIC0xMDYsNyArMTA4LDkg
QEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0
ZW0pCiAgICAgICAgIHJldHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlOwotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbShpdGVtLmlkZW50aWZpZXIoKSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMgYmFja0ZvcndhcmRMaXN0
Q291bnRzOworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRHb1RvSXRlbShpdGVtLmlkZW50aWZpZXIoKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJh
Y2tGb3J3YXJkTGlzdENvdW50cykpOworICAgIG1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRz
ID0gV1RGTW92ZShiYWNrRm9yd2FyZExpc3RDb3VudHMpOwogICAgIG1fcGFnZS0+c2FuZGJveEV4
dGVuc2lvblRyYWNrZXIoKS5iZWdpbkxvYWQobV9wYWdlLT5tYWluV2ViRnJhbWUoKSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiB9CiAKQEAgLTEyNywzNiArMTMxLDM5IEBAIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGlu
dCBpdGVtSW5kZXgpCiAKIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpiYWNrTGlz
dENvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpLCBt
X3BhZ2UtPmlkZW50aWZpZXIoKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGJh
Y2tMaXN0Q291bnQ7CisgICAgcmV0dXJuIG1fcGFnZSA/IGNhY2hlTGlzdENvdW50c0lmTmVjZXNz
YXJ5KCkuYmFja0NvdW50IDogMDsKIH0KIAogdW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogewotICAgIGlmICghbV9wYWdlKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wYWdlID8gY2FjaGVMaXN0Q291bnRzSWZOZWNlc3Nh
cnkoKS5mb3J3YXJkQ291bnQgOiAwOworfQogCi0gICAgdW5zaWduZWQgZm9yd2FyZExpc3RDb3Vu
dCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZv
cndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3
YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlzdENvdW50KSwgbV9wYWdlLT5pZGVudGlmaWVy
KCkpKQotICAgICAgICByZXR1cm4gMDsKK2NvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYg
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50c0lmTmVjZXNzYXJ5KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRzKSB7CisgICAgICAg
IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBiYWNrRm9yd2FyZExpc3RDb3VudHM7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkTGlzdENvdW50cygpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHM6OlJlcGx5KGJhY2tGb3J3
YXJkTGlzdENvdW50cyksIG1fcGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jYWNoZWRC
YWNrRm9yd2FyZExpc3RDb3VudHMgPSBXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdENvdW50cyk7Cisg
ICAgfQorICAgIHJldHVybiAqbV9jYWNoZWRCYWNrRm9yd2FyZExpc3RDb3VudHM7Cit9CiAKLSAg
ICByZXR1cm4gZm9yd2FyZExpc3RDb3VudDsKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OmNsZWFyQ2FjaGVkTGlzdENvdW50cygpCit7CisgICAgbV9jYWNoZWRCYWNrRm9yd2FyZExpc3RD
b3VudHMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OmNsb3NlKCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwor
ICAgIG1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRzID0gV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzIHsgfTsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xlYXIoKQogewor
ICAgIG1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRzID0gV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzIHsgfTsgLy8gQ2xlYXJpbmcgdGhlIGJhY2svZm9yd2FyZCBsaXN0IHdpbGwgY2F1c2UgdGhl
IGNvdW50cyB0byBiZWNvbWUgMC4KICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6QmFja0ZvcndhcmRDbGVhcigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXgg
ZDFiYWFkYjkxYzU1ODYxYjE1NDNiOTcxNzY0ODYyYjVkMjIzOTc3NS4uMTc0NTY5ODNmYTIzMmQz
YzJjYWUxZjk4MTk2MTlhYjBhOGQxZDliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNjIsMTAgKzYzLDEzIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIGJhY2tMaXN0Q291
bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJiBjYWNoZUxp
c3RDb3VudHNJZk5lY2Vzc2FyeSgpIGNvbnN0OworICAgIHZvaWQgY2xlYXJDYWNoZWRMaXN0Q291
bnRzKCk7CiAKICAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlKiBtX3Bh
Z2U7CisgICAgbXV0YWJsZSBPcHRpb25hbDxXZWJCYWNrRm9yd2FyZExpc3RDb3VudHM+IG1fY2Fj
aGVkQmFja0ZvcndhcmRMaXN0Q291bnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwg
U291cmNlLnhjc2NoZW1lIGIvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVt
ZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQppbmRleCBlMWM5NzRjYWYzYjFhZjVmNmYwY2ZlNTc3MDRh
NTY3ZTI4M2M1MDlkLi5iNzVmNGJkMTk5ZDhhZTU2ZWJmZjM3N2M4ZjIyODEzMWE4ZWIzMjdiIDEw
MDY0NAotLS0gYS9XZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwg
U291cmNlLnhjc2NoZW1lCQorKysgYi9XZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lCQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICAg
ICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQogICAgICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmll
ciA9ICJwcmltYXJ5IgogICAgICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICJGQjM5
RDBEMDEyMDBGMEUzMDAwODhFNjkiCi0gICAgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gImxp
YkFOR0xFLXNoYXJlZC5keWxpYiIKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAibGli
QU5HTEUuYSIKICAgICAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiQU5HTEUiCiAgICAgICAg
ICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2oiPgogICAgICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVu
Y2U+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388439</attachid>
            <date>2020-01-22 10:42:00 -0800</date>
            <delta_ts>2020-01-26 17:16:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206438-20200122104200.patch</filename>
            <type>text/plain</type>
            <size>29466</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMzU1ZTc4MDExOGE5ODgx
ZjA5YmVlNTRhZTY1ZTM0ZTk3ZTU1MjYuLmQ4Zjg3OWY3ODdhOGFiNTFhMGRkY2RlNGQ3ZGUzYTg2
NjEzMjMzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDEtMjIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGcmVxdWVudCBzeW5jIEJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudC9CYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBDIG9uIHJlZGRp
dC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZy
ZXF1ZW50IHN5bmMgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50L0JhY2tGb3J3YXJkRm9yd2FyZExp
c3RDb3VudCBJUEMgb24gcmVkZGl0LmNvbS4gV2hlbiBzY3JvbGxpbmcgb24gcmVkZGl0LmNvbSwK
KyAgICAgICAgeW91IGZyZXF1ZW50bHkgc2VlIDIgY29uc2VjdXRpdmUgc3luYyBJUENzIChXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCB0aGVuIFdlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KQorICAgICAgICBmcm9tIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MgdG8gdGhlIFVJUHJvY2Vzcy4gVGhvc2UgYXJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIFRo
aXMgaGFwcGVucyBldmVyeSB0aW1lIHRoZSBzY3JpcHQgb24gdGhlIHBhZ2UgYWNjZXNzZXMKKyAg
ICAgICAgaGlzdG9yeS5sZW5ndGgsIHdoaWNoIGlzIHVuZm9ydHVuYXRlLCBzaW5jZSB0aGlzIGhp
c3RvcnkgbGVuZ3RoIHJhcmVseSBjaGFuZ2VzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlz
c3VlLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAxLiBNZXJnZSBC
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQgLyBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBD
cyBpbnRvIGEgc2luZ2xlIEJhY2tGb3J3YXJkTGlzdENvdW50cyBJUEMgd2hpY2ggcmV0dXJucyBi
b3RoCisgICAgICAgICAgIHRoZSBiYWNrICYgZm9yd2FyZCBjb3VudHMsIHNpbmNlIHdlIG9mdGVu
IG5lZWQgYm90aCAoZS5nLiB3aGVuIGFjY2Vzc2luZyBoaXN0b3J5Lmxlbmd0aCkgYW5kIHNpbmNl
IGdldHRpbmdzIHRob3NlIGNvdW50cyBpcworICAgICAgICAgICB2ZXJ5IGNoZWFwIGNvbXBhcmVk
IHRvIHRoZSBjb3N0IG9mIGEgc3luYyBJUEMuCisgICAgICAgIDIuIENhY2hlIHRob3NlIGNvdW50
cyBpbiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eSBhbmQgYmxvdyBhd2F5IHRoZSBjYWNoZWQgY291
bnRzIHdoZW5ldmVyIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBjaGFuZ2VzLiBJbiB0aGUKKyAgICAg
ICAgICAgY29tbW9uIGNhc2UgKHdoZXJlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCByYXJlbHkgY2hh
bmdlcyksIHdlIG5vdyBzZWUgYSBzaW5nbGUgc3luYyBJUEMgaW5zdGVhZCBvZiBtYW55ICh2ZXJp
ZmllZCBvbiByZWRkaXQuY29tKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG1lcmVseSBhIHBl
cmZvcm1hbmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50
c0lmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpjbGVhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5Lmg6CisKIDIwMjAtMDEtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbSVBDIEhhcmRlbmluZ10gT25seSBwcm9jZXNzIE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2VzcyBtZXNzYWdlcyB3aGVuIHNlbnQgYnkgdGhlIFVJUHJvY2VzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NDc1YzhkMDVkNGZjYzhmYjc1MWE1MjY5ZGI2MWIzMDgzMmMzNDIxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMgeworICAgIHVpbnQzMl90IGJhY2tDb3VudCB7IDAgfTsKKyAgICB1aW50MzJfdCBmb3J3YXJk
Q291bnQgeyAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGJhY2tDb3VudDsKKyAgICAgICAgZW5jb2Rl
ciA8PCBmb3J3YXJkQ291bnQ7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cz4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7Cisg
ICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBiYWNrQ291bnQ7CisgICAgICAgIGRlY29kZXIgPj4g
YmFja0NvdW50OworICAgICAgICBpZiAoIWJhY2tDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGZvcndhcmRDb3VudDsK
KyAgICAgICAgZGVjb2RlciA+PiBmb3J3YXJkQ291bnQ7CisgICAgICAgIGlmICghZm9yd2FyZENv
dW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4g
V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsgKmJhY2tDb3VudCwgKmZvcndhcmRDb3VudCB9Owor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDliYTlhNDQ0MzIyMDFmNWJm
YjJiYzlmYTM3NGE2ZGNiZmZiNTI3YTQuLjg5MjIzZDg1ODNhMmIxZWE4ZTljOWMwMWUyNDM1MjUx
YTUyMDg4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJiBwYXJhbWV0ZQog
ICAgIG1fcGFnZS5zdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bV93ZWJQYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCi12b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuYmFja0ZvcndhcmRHb1RvSXRl
bVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAppbmRleCBlNmI0NzM1NTI0N2M2NDZjM2IwODk3NjZjODg3MmVlY2I5MDE3ZGFh
Li5jYzk3MGM1MDE1NmI5ODg0MTgxZTdlOGU0ZTIyZGMxYTE0YjI5M2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxv
YWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1
Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
KTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYpPiYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAzN2Y0Y2JkOTQyMTU0Y2FiYWY3
MzFjNDc5Zjc3MGZlOTljODllNmIxLi41NDJkYzhjNzViNzI2YWQwMDQyMzlhZmE2MGVhZWFmOGRj
ZmE3ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlz
dC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgorI2luY2x1
ZGUgIldlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgpAQCAtMjc0LDYgKzI3NSwxMSBAQCB1
bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogICAg
IHJldHVybiBtX3BhZ2UgJiYgbV9jdXJyZW50SW5kZXggPyBtX2VudHJpZXMuc2l6ZSgpIC0gKCpt
X2N1cnJlbnRJbmRleCArIDEpIDogMDsKIH0KIAorV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIFdl
YkJhY2tGb3J3YXJkTGlzdDo6Y291bnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzIHsgYmFja0xpc3RDb3VudCgpLCBmb3J3YXJkTGlzdENvdW50KCkgfTsK
K30KKwogUmVmPEFQSTo6QXJyYXk+IFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3QoKSBjb25z
dAogewogICAgIHJldHVybiBiYWNrTGlzdEFzQVBJQXJyYXlXaXRoTGltaXQoYmFja0xpc3RDb3Vu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5k
ZXggYTYxMzU2OTg2MjhhNjBiMjNiYmE4Yzg2YTU2ZWM2NGIwNzhjZjI1My4uZGYxYjE4NTFkNDJl
NmIyNDI4YTdjYzgxMzhlYzZhZTcwYmYyYjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGU7CitzdHJ1Y3QgV2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzOwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3Q+IHsKIHB1YmxpYzoK
QEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKKyAgICBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMgY291bnRzKCkgY29uc3Q7CiAKICAgICBSZWY8QVBJOjpBcnJh
eT4gYmFja0xpc3QoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJheT4gZm9yd2FyZExpc3QoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZmMWEz
ZWEwYjQ1ZDMzOWZjODAyOTA0NmRlNjg5NTUzMDIwOGRiNWQuLjA3NzYyYWMwN2ZmMTlhNzhiZjY2
ZThiOTgxYjY4ZmFlNzA5ZGI5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9u
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIldlYkJhY2tG
b3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIgogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKQEAgLTYwNDEsMjggKzYw
NDIsMjggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBpdGVtU3RhdGUpCiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmFkZEl0
ZW0oV1RGTW92ZShpdGVtKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdv
VG9JdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIE9uIHByb2Nlc3Mgc3dhcCwgd2UgdGVs
bCB0aGUgcHJldmlvdXMgcHJvY2VzcyB0byBpZ25vcmUgdGhlIGxvYWQsIHdoaWNoIGNhdXNlcyBp
dCBzbyByZXN0b3JlIGl0cyBjdXJyZW50IGJhY2sgZm9yd2FyZCBpdGVtIHRvIGl0cyBwcmV2aW91
cwogICAgIC8vIHZhbHVlLiBTaW5jZSB0aGUgbG9hZCBpcyByZWFsbHkgZ29pbmcgb24gaW4gYSBu
ZXcgcHJvdmlzaW9uYWwgcHJvY2Vzcywgd2Ugd2FudCB0byBpZ25vcmUgc3VjaCByZXF1ZXN0cyBm
cm9tIHRoZSBjb21taXR0ZWQgcHJvY2Vzcy4KICAgICAvLyBBbnkgcmVhbCBuZXcgbG9hZCBpbiB0
aGUgY29tbWl0dGVkIHByb2Nlc3Mgd291bGQgaGF2ZSBjbGVhcmVkIG1fcHJvdmlzaW9uYWxQYWdl
LgogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIG1fYmFj
a0ZvcndhcmRMaXN0LT5jb3VudHMoKSk7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIGl0ZW1JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogaXRlbSA9IG1fYmFja0ZvcndhcmRM
aXN0LT5pdGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgbWF5YmVJbml0aWFsaXplU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCBVUkwoVVJMKCksIGl0ZW0tPnVybCgpKSwgaXRl
bS0+cmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAg
IG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbSgqaXRlbSk7Ci0gICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9iYWNrRm9yd2FyZExpc3QtPmNv
dW50cygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgo
aW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYwNzMsMTQgKzYw
NzQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90
IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRCYWNr
TGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYmFja0ZvcndhcmRMaXN0LT5iYWNr
TGlzdENvdW50KCkpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRGb3J3YXJk
TGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkTGlzdENvdW50cyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHNEZWxheWVkUmVwbHkmJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX2JhY2tGb3J3YXJkTGlz
dC0+Zm9yd2FyZExpc3RDb3VudCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX2JhY2tGb3J3
YXJkTGlzdC0+Y291bnRzKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcG9zaXRpb25X
YXNDYW5jZWxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ3
N2NkM2ZmNTY3MGE0NmNhMzQ0YzA2YTg1NmQ5MjhmNTUzNzQ2M2IuLmQ5MzZlZmE0MDA1OGQ3NzM3
MTdmMGE5NzZhOTQ1MDM1YmExZjA5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5OwogY2xhc3MgV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyOwog
CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKK3N0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHM7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsK
IHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0OwpAQCAtMTU5Myw3ICsxNTk0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
KTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdyk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmln
YXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYp
OworICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKQEAgLTE4ODYsMTAgKzE4ODcsOSBAQCBwcml2YXRlOgog
CiAgICAgLy8gQmFjay9Gb3J3YXJkIGxpc3QgbWFuYWdlbWVudAogICAgIHZvaWQgYmFja0Zvcndh
cmRBZGRJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKLSAgICB2b2lkIGJhY2tGb3J3
YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKKyAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGJh
Y2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJik7Ci0g
ICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50MzJfdCk+JiYpOwotICAgIHZvaWQgYmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkTGlz
dENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHNEZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZENsZWFyKCk7CiAKICAgICAvLyBVbmRv
IG1hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAzYTc0NjAxMWVhOGRhOGVlOGNjYWY3Yjc3Zjk1NGIwMDc3ODNjMzQy
Li5hNmQ0YzYxNzNiMGZkNzVhNWY1MDdlNDRmNjBmN2RmZDE0ZjQzM2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMjQsMTAg
KzIyNCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIEJhY2tGb3J3YXJk
IG1lc3NhZ2VzCiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHN0cnVjdCBXZWJLaXQ6OkJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCi0gICAgQmFja0ZvcndhcmRHb1RvSXRlbShzdHJ1
Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpdGVtSUQpIC0+IChXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSBTeW5jaHJv
bm91cworICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgaXRlbUlEKSAtPiAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc3RydWN0IFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0Q291bnRzIGNvdW50cykgU3luY2hyb25vdXMKICAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4
KGludDMyX3QgaXRlbUluZGV4KSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllcj4gaXRlbUlEKSBTeW5jaHJvbm91cwotICAgIEJhY2tGb3J3YXJkQmFja0xpc3RD
b3VudCgpIC0+ICh1aW50MzJfdCBjb3VudCkgU3luY2hyb25vdXMKLSAgICBCYWNrRm9yd2FyZEZv
cndhcmRMaXN0Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpIFN5bmNocm9ub3VzCisgICAgQmFj
a0ZvcndhcmRMaXN0Q291bnRzKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyBjb3VudHMpIFN5bmNocm9ub3VzCiAgICAgQmFja0ZvcndhcmRDbGVhcigpCiAgICAg
V2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJkQ2FjaGUpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhZGVhNTg1
MGY4ODY0M2FmNzBmODk1MDMxYjM4NjE1NmIyZTQzZjguLjVhYjIyMDU2Zjc0YjE5YTc3NTEyZTAw
ZTQyZDk4YzhmYTUyNzA5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTUxLDYgKzk1MSw3IEBACiAJCTQ2QkVCNkRGMjJGQkIxNkIw
MDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQyMkZCQjE2QjAwMjY5ODY3IC8qIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVCNkUzMjJGQkIyMUEwMDI2OTg2
NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJGQkIyMUEwMDI2OTg2NyAvKiBU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKIAkJNDZDMzkyMjkyMzE2RUM0
RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CisJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2
QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8q
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkY3N0Q4MDIzQkU2M0JFMDA5MEI1QTcg
LyogRGVwZW5kZW5jeVByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Rjc3RDdFMjNCRTYzQjEwMDkwQjVBNyAvKiBEZXBlbmRl
bmN5UHJvY2Vzc0Fzc2VydGlvbi5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEg
LyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5LmggKi87IH07CkBAIC0yMTE5LDkgKzIxMjAsOSBAQAogCQkwN0I5M0ZG
NTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0JBRjM1NjIzQTJDQzE3MDA0NDI1N0UgLyogUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QkFGMzU3MjNBMkNDMTkwMDQ0MjU3RSAv
KiBSZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0UxOUVG
ODIzRDQwMUYwMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwN0UxOUVGOTIzRDQwMUYwMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlTWVzc2FnZXMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3RTE5RUZBMjNENDAxRjAwMDk0
RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXNSZXBsaWVzLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFMTlFRjgyM0Q0MDFGMDAwOTRG
RkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UxOUVG
OTIzRDQwMUYwMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdFMTlFRkEyM0Q0MDFG
MDAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzUmVwbGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVG
RTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFw
cEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQx
MTU4QzAyQUFDMDcgLyogZW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBl
bjsgcGF0aCA9IGVuLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93c2luZ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzQ5MCw2ICszNDkxLDcgQEAKIAkJNDZCRUI2RTEyMkZCQjIxQTAwMjY5ODY3IC8q
IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCRUI2RTIyMkZCQjIxQTAwMjY5ODY3IC8qIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkMzOTIyODIzMTZFQzREMDA4RUVE
OUIgLyogV2ViUGFnZVByb3h5SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2Q0UzQjEwMjNE
OEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REYwNjM5MUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGNzdE
N0UyM0JFNjNCMTAwOTBCNUE3IC8qIERlcGVuZGVuY3lQcm9jZXNzQXNzZXJ0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlcGVuZGVuY3lQcm9jZXNzQXNzZXJ0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzYxLDYgKzU3NjMsNyBAQAogCQkJCTFB
QzEzMzY2MTg1NjVCNTcwMEYzRUMwNSAvKiBVc2VyRGF0YS5oICovLAogCQkJCTI2ODQwNTRBMThC
ODY2RkYwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCAqLywKIAkJ
CQkyNjg0MDU0MjE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
by5oICovLAorCQkJCTQ2Q0UzQjEwMjNEOEM4M0QwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaCAqLywKIAkJCQk1MThEMkNBQjEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgKi8sCiAJCQkJNTE4RDJDQUMxMkQ1MTUzQjAwM0JCOTNCIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKIAkJCQlCQ0Y1MDcyNjEyNDMyOUFBMDA1OTU1QUUg
LyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCkBAIC0xMDU3MSw2ICsxMDU3NCw3IEBACiAJCQkJ
MUMwQTE5NUMxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3Jp
cHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzJCQTFF
MTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2Q0UzQjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEQyQ0FFMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzcyQjlGQjExRTY0NzZCMDAx
RUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
ODk3RUQxMUY0MTVENjgwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA5MTc0ZmUxZjk5YzJmYTUz
YjkzZDdmOTJkZGUyZGYxZGFiZTQ1NmJlLi4wNWMzOGNlMmFkYjZlOGJhZTZiNjY2NTE1Nzc5NDE1
NzZjYzY2YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpCiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3Vs
ZCBub3QgYWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3Zlcndy
aXRlRXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3Rp
bmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwog
ICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkpOworICAgIGNs
ZWFyQ2FjaGVkTGlzdENvdW50cygpOwogfQogCiBzdGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0b3J5
SXRlbUNoYW5nZWQoSGlzdG9yeUl0ZW0mIGl0ZW0pCkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIExPRyhC
YWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYlByb2Nlc3MgcGlkICVpIHNldHRpbmcgaXRl
bSAlcCBmb3IgaWQgJXMgd2l0aCB1cmwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIGl0ZW0u
cHRyKCksIGl0ZW0tPmlkZW50aWZpZXIoKS5sb2dTdHJpbmcoKSwgaXRlbS0+dXJsU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgY2xlYXJDYWNoZWRMaXN0Q291bnRzKCk7CiAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZShpdGVtLmdldCgpKSkpOwogfQogCkBAIC0xMDYsNyArMTA4LDkg
QEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0
ZW0pCiAgICAgICAgIHJldHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlOwotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbShpdGVtLmlkZW50aWZpZXIoKSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMgYmFja0ZvcndhcmRMaXN0
Q291bnRzOworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRHb1RvSXRlbShpdGVtLmlkZW50aWZpZXIoKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJh
Y2tGb3J3YXJkTGlzdENvdW50cykpOworICAgIG1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRz
ID0gV1RGTW92ZShiYWNrRm9yd2FyZExpc3RDb3VudHMpOwogICAgIG1fcGFnZS0+c2FuZGJveEV4
dGVuc2lvblRyYWNrZXIoKS5iZWdpbkxvYWQobV9wYWdlLT5tYWluV2ViRnJhbWUoKSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiB9CiAKQEAgLTEyNywzNiArMTMxLDQwIEBAIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGlu
dCBpdGVtSW5kZXgpCiAKIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpiYWNrTGlz
dENvdW50KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpLCBt
X3BhZ2UtPmlkZW50aWZpZXIoKSkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGJh
Y2tMaXN0Q291bnQ7CisgICAgcmV0dXJuIGNhY2hlTGlzdENvdW50c0lmTmVjZXNzYXJ5KCkuYmFj
a0NvdW50OwogfQogCiB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExp
c3RDb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBjYWNoZUxpc3RDb3VudHNJZk5lY2Vzc2FyeSgpLmZvcndhcmRDb3VudDsKK30K
IAotICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQgPSAwOwotICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KCksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudDo6UmVwbHkoZm9yd2Fy
ZExpc3RDb3VudCksIG1fcGFnZS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgcmV0dXJuIDA7Citj
b25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpj
YWNoZUxpc3RDb3VudHNJZk5lY2Vzc2FyeSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NhY2hlZEJh
Y2tGb3J3YXJkTGlzdENvdW50cykgeworICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMg
YmFja0ZvcndhcmRMaXN0Q291bnRzOworICAgICAgICBpZiAobV9wYWdlKQorICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRMaXN0Q291bnRzKCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkTGlzdENvdW50czo6UmVwbHkoYmFja0Zvcndh
cmRMaXN0Q291bnRzKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpOworICAgICAgICBtX2NhY2hlZEJh
Y2tGb3J3YXJkTGlzdENvdW50cyA9IFdURk1vdmUoYmFja0ZvcndhcmRMaXN0Q291bnRzKTsKKyAg
ICB9CisgICAgcmV0dXJuICptX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50czsKK30KIAotICAg
IHJldHVybiBmb3J3YXJkTGlzdENvdW50Owordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
Y2xlYXJDYWNoZWRMaXN0Q291bnRzKCkKK3sKKyAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENv
dW50cyA9IFdURjo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
Y2xvc2UoKQogewogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7Cisg
ICAgbV9jYWNoZWRCYWNrRm9yd2FyZExpc3RDb3VudHMgPSBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMgeyB9OwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbGVhcigpCiB7Cisg
ICAgbV9jYWNoZWRCYWNrRm9yd2FyZExpc3RDb3VudHMgPSBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHMgeyB9OyAvLyBDbGVhcmluZyB0aGUgYmFjay9mb3J3YXJkIGxpc3Qgd2lsbCBjYXVzZSB0aGUg
Y291bnRzIHRvIGJlY29tZSAwLgogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZENsZWFyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBk
MWJhYWRiOTFjNTU4NjFiMTU0M2I5NzE3NjQ4NjJiNWQyMjM5Nzc1Li4xNzQ1Njk4M2ZhMjMyZDNj
MmNhZTFmOTgxOTYxOWFiMGE4ZDFkOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC02MiwxMCArNjMsMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgYmFja0xpc3RDb3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmIGNhY2hlTGlz
dENvdW50c0lmTmVjZXNzYXJ5KCkgY29uc3Q7CisgICAgdm9pZCBjbGVhckNhY2hlZExpc3RDb3Vu
dHMoKTsKIAogICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2UqIG1fcGFn
ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cz4gbV9jYWNo
ZWRCYWNrRm9yd2FyZExpc3RDb3VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388818</attachid>
            <date>2020-01-26 17:16:38 -0800</date>
            <delta_ts>2020-01-26 20:38:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206438-20200126171520.patch</filename>
            <type>text/plain</type>
            <size>26693</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDExMTdmNWRhMDZhZjI4M2Fm
N2UyZDVkNjI2OGIwYWE3OWVmMTY2NDEuLmI0OTEyODliNjQ5MTI3ZjYzY2Y0ODYyNzlmNzU0YjJi
ZDgzOTViM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDEtMjQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGcmVxdWVudCBzeW5jIEJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudC9CYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBDIG9uIHJlZGRp
dC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEZyZXF1
ZW50IHN5bmMgQmFja0ZvcndhcmRCYWNrTGlzdENvdW50L0JhY2tGb3J3YXJkRm9yd2FyZExpc3RD
b3VudCBJUEMgb24gcmVkZGl0LmNvbS4gV2hlbiBzY3JvbGxpbmcgb24gcmVkZGl0LmNvbSwKKyAg
ICAgICAgeW91IGZyZXF1ZW50bHkgc2VlIDIgY29uc2VjdXRpdmUgc3luYyBJUENzIChXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCB0aGVuIFdlYlBhZ2VQcm94eTo6QmFja0Zv
cndhcmRGb3J3YXJkTGlzdENvdW50KQorICAgICAgICBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MgdG8gdGhlIFVJUHJvY2Vzcy4gVGhvc2UgYXJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIFRoaXMg
aGFwcGVucyBldmVyeSB0aW1lIHRoZSBzY3JpcHQgb24gdGhlIHBhZ2UgYWNjZXNzZXMKKyAgICAg
ICAgaGlzdG9yeS5sZW5ndGgsIHdoaWNoIGlzIHVuZm9ydHVuYXRlLCBzaW5jZSB0aGlzIGhpc3Rv
cnkgbGVuZ3RoIHJhcmVseSBjaGFuZ2VzLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3Vl
LCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlOgorICAgICAgICAxLiBNZXJnZSBCYWNr
Rm9yd2FyZEJhY2tMaXN0Q291bnQgLyBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQgSVBDcyBp
bnRvIGEgc2luZ2xlIEJhY2tGb3J3YXJkTGlzdENvdW50cyBJUEMgd2hpY2ggcmV0dXJucyBib3Ro
CisgICAgICAgICAgIHRoZSBiYWNrICYgZm9yd2FyZCBjb3VudHMsIHNpbmNlIHdlIG9mdGVuIG5l
ZWQgYm90aCAoZS5nLiB3aGVuIGFjY2Vzc2luZyBoaXN0b3J5Lmxlbmd0aCkgYW5kIHNpbmNlIGdl
dHRpbmdzIHRob3NlIGNvdW50cyBpcworICAgICAgICAgICB2ZXJ5IGNoZWFwIGNvbXBhcmVkIHRv
IHRoZSBjb3N0IG9mIGEgc3luYyBJUEMuCisgICAgICAgIDIuIENhY2hlIHRob3NlIGNvdW50cyBp
biBXZWJCYWNrRm9yd2FyZExpc3RQcm94eSBhbmQgYmxvdyBhd2F5IHRoZSBjYWNoZWQgY291bnRz
IHdoZW5ldmVyIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBjaGFuZ2VzLiBJbiB0aGUKKyAgICAgICAg
ICAgY29tbW9uIGNhc2UgKHdoZXJlIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCByYXJlbHkgY2hhbmdl
cyksIHdlIG5vdyBzZWUgYSBzaW5nbGUgc3luYyBJUEMgaW5zdGVhZCBvZiBtYW55ICh2ZXJpZmll
ZCBvbiByZWRkaXQuY29tKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG1lcmVseSBhIHBlcmZv
cm1hbmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Z29Ub0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50c0lm
TmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjpjbGVhcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5Lmg6CisKIDIwMjAtMDEtMjYgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBPYmplY3RJZGVudGlmaWVyIGZvciByZW1vdGUgUmVhbHRp
bWVNZWRpYVNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RDb3VudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDc1YzhkMDVkNGZjYzhmYjc1MWE1MjY5ZGI2MWIzMDgz
MmMzNDIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMgeworICAgIHVpbnQzMl90IGJhY2tDb3VudCB7IDAgfTsKKyAg
ICB1aW50MzJfdCBmb3J3YXJkQ291bnQgeyAwIH07CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGJhY2tDb3Vu
dDsKKyAgICAgICAgZW5jb2RlciA8PCBmb3J3YXJkQ291bnQ7CisgICAgfQorCisgICAgc3RhdGlj
IE9wdGlvbmFsPFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cz4gZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBiYWNrQ291bnQ7Cisg
ICAgICAgIGRlY29kZXIgPj4gYmFja0NvdW50OworICAgICAgICBpZiAoIWJhY2tDb3VudCkKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGZvcndhcmRDb3VudDsKKyAgICAgICAgZGVjb2RlciA+PiBmb3J3YXJkQ291bnQ7CisgICAg
ICAgIGlmICghZm9yd2FyZENvdW50KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICByZXR1cm4gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsgKmJhY2tDb3VudCwg
KmZvcndhcmRDb3VudCB9OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4
IDliYTlhNDQ0MzIyMDFmNWJmYjJiYzlmYTM3NGE2ZGNiZmZiNTI3YTQuLjg5MjIzZDg1ODNhMmIx
ZWE4ZTljOWMwMWUyNDM1MjUxYTUyMDg4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMmJiBwYXJhbWV0ZQogICAgIG1fcGFnZS5zdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQog
Ci12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25z
dCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2Uu
YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBpZGVudGlmaWVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCBlNmI0NzM1NTI0N2M2NDZjM2IwODk3
NjZjODg3MmVlY2I5MDE3ZGFhLi5jYzk3MGM1MDE1NmI5ODg0MTgxZTdlOGU0ZTIyZGMxYTE0YjI5
M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2Vj
dXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
ZywgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hl
bWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJk
R29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJh
Y2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFt
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAog
ICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAz
N2Y0Y2JkOTQyMTU0Y2FiYWY3MzFjNDc5Zjc3MGZlOTljODllNmIxLi41NDJkYzhjNzViNzI2YWQw
MDQyMzlhZmE2MGVhZWFmOGRjZmE3ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zvcndh
cmRDYWNoZS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgpAQCAt
Mjc0LDYgKzI3NSwxMSBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0
Q291bnQoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UgJiYgbV9jdXJyZW50SW5kZXggPyBtX2Vu
dHJpZXMuc2l6ZSgpIC0gKCptX2N1cnJlbnRJbmRleCArIDEpIDogMDsKIH0KIAorV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y291bnRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsgYmFja0xpc3RDb3VudCgpLCBmb3J3
YXJkTGlzdENvdW50KCkgfTsKK30KKwogUmVmPEFQSTo6QXJyYXk+IFdlYkJhY2tGb3J3YXJkTGlz
dDo6YmFja0xpc3QoKSBjb25zdAogewogICAgIHJldHVybiBiYWNrTGlzdEFzQVBJQXJyYXlXaXRo
TGltaXQoYmFja0xpc3RDb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmgKaW5kZXggYTYxMzU2OTg2MjhhNjBiMjNiYmE4Yzg2YTU2ZWM2NGIwNzhj
ZjI1My4uZGYxYjE4NTFkNDJlNmIyNDI4YTdjYzgxMzhlYzZhZTcwYmYyYjgwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTM1LDYgKzM1LDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0U3RhdGU7Citz
dHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzOwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3QgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2Fy
ZExpc3Q+IHsKIHB1YmxpYzoKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWdu
ZWQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZvcndhcmRMaXN0Q291bnQo
KSBjb25zdDsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMgY291bnRzKCkgY29uc3Q7CiAK
ICAgICBSZWY8QVBJOjpBcnJheT4gYmFja0xpc3QoKSBjb25zdDsKICAgICBSZWY8QVBJOjpBcnJh
eT4gZm9yd2FyZExpc3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDZmMWEzZWEwYjQ1ZDMzOWZjODAyOTA0NmRlNjg5NTUzMDIwOGRiNWQuLjA3
NzYyYWMwN2ZmMTlhNzhiZjY2ZThiOTgxYjY4ZmFlNzA5ZGI5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgIldl
YkF1dG9tYXRpb25TZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJk
TGlzdENvdW50cy5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNs
dWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0u
aCIKQEAgLTYwNDEsMjggKzYwNDIsMjggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
QWRkSXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBpdGVtU3RhdGUpCiAgICAgbV9iYWNr
Rm9yd2FyZExpc3QtPmFkZEl0ZW0oV1RGTW92ZShpdGVtKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50cyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIE9uIHBy
b2Nlc3Mgc3dhcCwgd2UgdGVsbCB0aGUgcHJldmlvdXMgcHJvY2VzcyB0byBpZ25vcmUgdGhlIGxv
YWQsIHdoaWNoIGNhdXNlcyBpdCBzbyByZXN0b3JlIGl0cyBjdXJyZW50IGJhY2sgZm9yd2FyZCBp
dGVtIHRvIGl0cyBwcmV2aW91cwogICAgIC8vIHZhbHVlLiBTaW5jZSB0aGUgbG9hZCBpcyByZWFs
bHkgZ29pbmcgb24gaW4gYSBuZXcgcHJvdmlzaW9uYWwgcHJvY2Vzcywgd2Ugd2FudCB0byBpZ25v
cmUgc3VjaCByZXF1ZXN0cyBmcm9tIHRoZSBjb21taXR0ZWQgcHJvY2Vzcy4KICAgICAvLyBBbnkg
cmVhbCBuZXcgbG9hZCBpbiB0aGUgY29tbWl0dGVkIHByb2Nlc3Mgd291bGQgaGF2ZSBjbGVhcmVk
IG1fcHJvdmlzaW9uYWxQYWdlLgogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIG1fYmFja0ZvcndhcmRMaXN0LT5jb3VudHMoKSk7CiAKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBiYWNrRm9yd2Fy
ZEdvVG9JdGVtU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGl0ZW1JRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1Rv
SXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogaXRl
bSA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0p
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogCiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAg
bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCBVUkwoVVJMKCks
IGl0ZW0tPnVybCgpKSwgaXRlbS0+cmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOwogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbSgqaXRlbSk7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9i
YWNrRm9yd2FyZExpc3QtPmNvdW50cygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTYwNzMsMTQgKzYwNzQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJ
dGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRCYWNrTGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYmFj
a0ZvcndhcmRMaXN0LT5iYWNrTGlzdENvdW50KCkpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6
YmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMy
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
TGlzdENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3VudHNE
ZWxheWVkUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxl
cihtX2JhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihtX2JhY2tGb3J3YXJkTGlzdC0+Y291bnRzKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29tcG9zaXRpb25XYXNDYW5jZWxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGFjNjYxNWExYTk2Y2IwYjhkZDJjYzA4MTFjOTk0Y2NhYTM1ZjU3M2Yu
LjVkNGE3MWQzMzA3Y2IwYzAxYjk3ZTc0ZTRhMzdlN2EyNDkzNWJmOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5OwogY2xhc3MgV2ViVmlld0RpZE1vdmVU
b1dpbmRvd09ic2VydmVyOwogCiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKK3N0cnVjdCBXZWJC
YWNrRm9yd2FyZExpc3RDb3VudHM7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0
YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0OwpAQCAtMTU5
NSw3ICsxNTk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hl
bWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6
TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgYmFja0ZvcndhcmRHb1Rv
SXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJik+JiYpOworICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1l
SW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKQEAgLTE4OTMsMTAgKzE4
OTQsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gQmFjay9Gb3J3YXJkIGxpc3QgbWFuYWdlbWVudAog
ICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmKTsK
LSAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYpPiYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYp
PiYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyPiYmKT4mJik7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50MzJfdCk+JiYpOwotICAgIHZvaWQgYmFja0ZvcndhcmRGb3J3
YXJkTGlzdENvdW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDMyX3QpPiYmKTsKKyAgICB2
b2lkIGJhY2tGb3J3YXJkTGlzdENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9y
d2FyZExpc3RDb3VudHNEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZENsZWFy
KCk7CiAKICAgICAvLyBVbmRvIG1hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYTc0NjAxMWVhOGRhOGVlOGNjYWY3
Yjc3Zjk1NGIwMDc3ODNjMzQyLi5hNmQ0YzYxNzNiMGZkNzVhNWY1MDdlNDRmNjBmN2RmZDE0ZjQz
M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMjQsMTAgKzIyNCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAK
ICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHN0cnVj
dCBXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCi0gICAgQmFja0Zv
cndhcmRHb1RvSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBp
dGVtSUQpIC0+IChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSBTeW5jaHJvbm91cworICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0oc3RydWN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaXRlbUlEKSAtPiAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc3RydWN0IFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIGNvdW50cykgU3luY2hyb25vdXMKICAgICBCYWNr
Rm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEKSBTeW5jaHJvbm91cwotICAgIEJh
Y2tGb3J3YXJkQmFja0xpc3RDb3VudCgpIC0+ICh1aW50MzJfdCBjb3VudCkgU3luY2hyb25vdXMK
LSAgICBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSAtPiAodWludDMyX3QgY291bnQpIFN5
bmNocm9ub3VzCisgICAgQmFja0ZvcndhcmRMaXN0Q291bnRzKCkgLT4gKHN0cnVjdCBXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBjb3VudHMpIFN5bmNocm9ub3VzCiAgICAgQmFja0Zv
cndhcmRDbGVhcigpCiAgICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpbkJhY2tGb3J3YXJk
Q2FjaGUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU4Nzg3ODk5ZWYwMmZmMGViOGY0NWYwZTExZjI2MzdiM2RjZjBiN2IuLjRlNjVm
YTNkYWFmMmRmYjIwYzk0ZTcxZjk0YzhjMmZjNmQ0MjEzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTUwLDYgKzk1MCw3IEBACiAJ
CTQ2QkVCNkRGMjJGQkIxNkIwMDI2OTg2NyAvKiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2REQyMkZC
QjE2QjAwMjY5ODY3IC8qIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmggKi87IH07CiAJCTQ2QkVC
NkUzMjJGQkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkUxMjJG
QkIyMUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCAqLzsgfTsK
IAkJNDZDMzkyMjkyMzE2RUM0RDAwOEVFRDlCIC8qIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzM5MjI4MjMx
NkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJZGVudGlmaWVyLmggKi87IH07CisJCTQ2Q0Uz
QjExMjNEOEM4NDkwMDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Q0UzQjEwMjNEOEM4M0Qw
MDE2QTk2QSAvKiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCAqLzsgfTsKIAkJNDZERjA2M0Mx
RjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAw
MTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oICovOyB9OwogCQk0NkY3N0Q4
MDIzQkU2M0JFMDA5MEI1QTcgLyogRGVwZW5kZW5jeVByb2Nlc3NBc3NlcnRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Rjc3RDdFMjNCRTYzQjEw
MDkwQjVBNyAvKiBEZXBlbmRlbmN5UHJvY2Vzc0Fzc2VydGlvbi5oICovOyB9OwogCQk0NkY5QjI2
MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQwMDA2
RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CkBAIC0zNDg5LDYgKzM0
OTAsNyBAQAogCQk0NkJFQjZFMTIyRkJCMjFBMDAyNjk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVz
cGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFMjIyRkJCMjFBMDAy
Njk4NjcgLyogVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QzM5MjI4MjMxNkVDNEQwMDhFRUQ5QiAvKiBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDRTNCMTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZERjA2MzkxRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRGMDYz
QTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY3N0Q3RTIzQkU2M0IxMDA5MEI1QTcg
LyogRGVwZW5kZW5jeVByb2Nlc3NBc3NlcnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGVwZW5kZW5jeVByb2Nlc3NBc3NlcnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU3NTgsNiArNTc2MCw3IEBACiAJCQkJMUFDMTMzNjYxODU2NUI1NzAwRjNF
QzA1IC8qIFVzZXJEYXRhLmggKi8sCiAJCQkJMjY4NDA1NEExOEI4NjZGRjAwMjJDMzhCIC8qIFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwICovLAogCQkJCTI2ODQwNTQyMThCODVBNjMw
MDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmggKi8sCisJCQkJNDZDRTNC
MTAyM0Q4QzgzRDAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oICovLAogCQkJ
CTUxOEQyQ0FCMTJENTE1M0IwMDNCQjkzQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCAq
LywKIAkJCQk1MThEMkNBQzEyRDUxNTNCMDAzQkI5M0IgLyogV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oICovLAogCQkJCUJDRjUwNzI2MTI0MzI5QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCAqLywKQEAgLTEwNTY3LDYgKzEwNTcwLDcgQEAKIAkJCQkxQzBBMTk1QzFDOTE2RTFCMDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDZGOUIyNjMyMzUyNkVGMzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3MkJBMUUxMUU2NDkwNzAwMUVCNEVBIC8q
IFdlYkJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZDRTNCMTEyM0Q4Qzg0
OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4RDJDQUUxMkQ1MTUzQjAwM0JCOTNCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNzJCOUZCMTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFRDExRjQxNUQ2ODAwMTZG
QTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuY3BwCmluZGV4IDkxNzRmZTFmOTljMmZhNTNiOTNkN2Y5MmRkZTJkZjFkYWJl
NDU2YmUuLmE4MjkyMGI0MTYyMWE2ZmFiYWY3ZWI3OTFjZDAzZGMxZjYwZjNhOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmkKICAgICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0
IGluIG91ciBtYXAuCiAgICAgQVNTRVJUX1VOVVNFRChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92
ZXJ3cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRU
b0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CiAgICAgaWRUb0hpc3RvcnlJdGVt
TWFwKCkuc2V0KGl0ZW1JRCwgaXRlbS5wdHIoKSk7CisgICAgY2xlYXJDYWNoZWRMaXN0Q291bnRz
KCk7CiB9CiAKIHN0YXRpYyB2b2lkIFdLMk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5
SXRlbSYgaXRlbSkKQEAgLTk3LDYgKzk4LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eTo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSkKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2sv
Rm9yd2FyZCkgV2ViUHJvY2VzcyBwaWQgJWkgc2V0dGluZyBpdGVtICVwIGZvciBpZCAlcyB3aXRo
IHVybCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgaXRlbS5wdHIoKSwgaXRlbS0+aWRlbnRp
ZmllcigpLmxvZ1N0cmluZygpLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBjbGVhckNhY2hlZExpc3RDb3VudHMoKTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRBZGRJdGVtKHRvQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
KGl0ZW0uZ2V0KCkpKSk7CiB9CiAKQEAgLTEwNiw3ICsxMDgsOSBAQCB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEdvVG9JdGVtKGl0ZW0uaWRlbnRpZmllcigpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRHb1RvSXRlbTo6UmVwbHkoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIFdl
YkJhY2tGb3J3YXJkTGlzdENvdW50cyBiYWNrRm9yd2FyZExpc3RDb3VudHM7CisgICAgbV9wYWdl
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGl0
ZW0uaWRlbnRpZmllcigpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRHb1Rv
SXRlbTo6UmVwbHkoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYmFja0ZvcndhcmRMaXN0Q291bnRz
KSk7CisgICAgbV9jYWNoZWRCYWNrRm9yd2FyZExpc3RDb3VudHMgPSBiYWNrRm9yd2FyZExpc3RD
b3VudHM7CiAgICAgbV9wYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmJlZ2luTG9hZCht
X3BhZ2UtPm1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsK
IH0KIApAQCAtMTI3LDM2ICsxMzEsNDAgQEAgUmVmUHRyPEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKIAogdW5zaWduZWQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogewotICAgIGlmICgh
bV9wYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHVuc2lnbmVkIGJhY2tMaXN0Q291bnQg
PSAwOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNr
TGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RD
b3VudDo6UmVwbHkoYmFja0xpc3RDb3VudCksIG1fcGFnZS0+aWRlbnRpZmllcigpKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKKyAgICByZXR1cm4gY2Fj
aGVMaXN0Q291bnRzSWZOZWNlc3NhcnkoKS5iYWNrQ291bnQ7CiB9CiAKIHVuc2lnbmVkIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNhY2hlTGlzdENvdW50c0lm
TmVjZXNzYXJ5KCkuZm9yd2FyZENvdW50OworfQogCi0gICAgdW5zaWduZWQgZm9yd2FyZExpc3RD
b3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEZvcndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRG
b3J3YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlzdENvdW50KSwgbV9wYWdlLT5pZGVudGlm
aWVyKCkpKQotICAgICAgICByZXR1cm4gMDsKK2NvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cyYgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50c0lmTmVjZXNzYXJ5KCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRzKSB7CisgICAg
ICAgIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyBiYWNrRm9yd2FyZExpc3RDb3VudHM7CisgICAg
ICAgIGlmIChtX3BhZ2UpCisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZExpc3RDb3VudHMoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zvcndh
cmRMaXN0Q291bnRzOjpSZXBseShiYWNrRm9yd2FyZExpc3RDb3VudHMpLCBtX3BhZ2UtPmlkZW50
aWZpZXIoKSk7CisgICAgICAgIG1fY2FjaGVkQmFja0ZvcndhcmRMaXN0Q291bnRzID0gYmFja0Zv
cndhcmRMaXN0Q291bnRzOworICAgIH0KKyAgICByZXR1cm4gKm1fY2FjaGVkQmFja0ZvcndhcmRM
aXN0Q291bnRzOworfQogCi0gICAgcmV0dXJuIGZvcndhcmRMaXN0Q291bnQ7Cit2b2lkIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5OjpjbGVhckNhY2hlZExpc3RDb3VudHMoKQoreworICAgIG1fY2Fj
aGVkQmFja0ZvcndhcmRMaXN0Q291bnRzID0gV1RGOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5OjpjbG9zZSgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAg
bV9wYWdlID0gbnVsbHB0cjsKKyAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50cyA9IFdl
YkJhY2tGb3J3YXJkTGlzdENvdW50cyB7IH07CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmNsZWFyKCkKIHsKKyAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50cyA9IFdl
YkJhY2tGb3J3YXJkTGlzdENvdW50cyB7IH07IC8vIENsZWFyaW5nIHRoZSBiYWNrL2ZvcndhcmQg
bGlzdCB3aWxsIGNhdXNlIHRoZSBjb3VudHMgdG8gYmVjb21lIDAuCiAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQ2xlYXIoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5oCmluZGV4IGQxYmFhZGI5MWM1NTg2MWIxNTQzYjk3MTc2NDg2MmI1ZDIyMzk3
NzUuLjE3NDU2OTgzZmEyMzJkM2MyY2FlMWY5ODE5NjE5YWIwYThkMWQ5YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0Zvcndh
cmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYyLDEwICs2MywxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBvdmVycmlkZTsKICAgICB1
bnNpZ25lZCBiYWNrTGlzdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgZm9y
d2FyZExpc3RDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFdlYkJhY2tGb3J3YXJk
TGlzdENvdW50cyYgY2FjaGVMaXN0Q291bnRzSWZOZWNlc3NhcnkoKSBjb25zdDsKKyAgICB2b2lk
IGNsZWFyQ2FjaGVkTGlzdENvdW50cygpOwogCiAgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwog
CiAgICAgV2ViUGFnZSogbV9wYWdlOworICAgIG11dGFibGUgT3B0aW9uYWw8V2ViQmFja0Zvcndh
cmRMaXN0Q291bnRzPiBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50czsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>