<?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>201970</bug_id>
          
          <creation_ts>2019-09-18 21:08:10 -0700</creation_ts>
          <short_desc>Introduce LegacyGlobalSettings for settings the NetworkProcess needs from a WebProcessPool</short_desc>
          <delta_ts>2019-10-14 09:51:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572239</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-18 21:08:10 -0700</bug_when>
    <thetext>Introduce LegacyGlobalSettings for settings the NetworkProcess needs from a WebProcessPool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572240</commentid>
    <comment_count>1</comment_count>
      <attachid>379101</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-18 21:10:55 -0700</bug_when>
    <thetext>Created attachment 379101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572278</commentid>
    <comment_count>2</comment_count>
      <attachid>379108</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 00:05:35 -0700</bug_when>
    <thetext>Created attachment 379108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572279</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-19 00:06:01 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572280</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 00:07:55 -0700</bug_when>
    <thetext>Note to glib API maintainers: webkit_web_context_set_cache_model and webkit_web_context_get_cache_model should be deprecated and replaced by a new value on WebsiteDataStore that is used if it is set and falls back to the legacy global value.  We have found the existing users of the C API only have one context so this is not a regression, and I imagine the same is true of the glib API users.  This is a necessary change moving forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572282</commentid>
    <comment_count>5</comment_count>
      <attachid>379109</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 00:14:15 -0700</bug_when>
    <thetext>Created attachment 379109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572283</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 00:15:31 -0700</bug_when>
    <thetext>Note: the WebsiteDataStore replacement should probably be more like a way to disable the memory cache and a way to disable the disk cache than something as strange as a 3-value &quot;cache model&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572290</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-19 01:20:21 -0700</bug_when>
    <thetext>But the cache model is not only used to enable/disable caches, it also adjusts the capacity of the caches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572390</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 09:58:46 -0700</bug_when>
    <thetext>I guess that’s true. We might still want a cache model based api for simplicity, but it will definitely need to be on the website data store where the cache is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572500</commentid>
    <comment_count>9</comment_count>
      <attachid>379109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-09-19 15:13:34 -0700</bug_when>
    <thetext>Comment on attachment 379109
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        I&apos;m starting by moving the cache model to this new abstraction.
&gt; +        We were using it in tests to disable the page cache, which should be done with a boolean on the pool configuration, not by changing the cache model.

Longer-term, I think page caching should be a setting on the website data store.

&gt; Source/WebKit/ChangeLog:10
&gt; +        We were also using it in WKContextSetCacheModel which has several clients that won&apos;t change quickly, so this abstraction is used to maintain existing behavior.

Does this patch maintain existing behavior, or does it create a new behavior where WKContextSetCacheModel is now global instead of per-context? (How do we know that it&apos;s OK to be global?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572656</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-19 22:45:37 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; Longer-term, I think page caching should be a setting on the website data
&gt; store.
I think I agree.  That detail doesn&apos;t need to be decided for this patch.  It does need to be decided for the replacement for WKContextSetCacheModel.

&gt; Does this patch maintain existing behavior, or does it create a new behavior
&gt; where WKContextSetCacheModel is now global instead of per-context? (How do
&gt; we know that it&apos;s OK to be global?)
This patch maintains existing behavior because every client using WKContextSetCacheModel has one WKContextRef that they use in their process for everything.  This patch is necessary because we don&apos;t want the NetworkProcess to get settings from any one ProcessPool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572685</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 01:00:49 -0700</bug_when>
    <thetext>Right now I&apos;ll also have to make hstsStorageDirectory a legacy global setting.  There may be one or two more, but most of the things can move to WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572686</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-20 01:01:42 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; (In reply to Geoffrey Garen from comment #9)
&gt; &gt; Longer-term, I think page caching should be a setting on the website data
&gt; &gt; store.
&gt; I think I agree.  That detail doesn&apos;t need to be decided for this patch.  It
&gt; does need to be decided for the replacement for WKContextSetCacheModel.
&gt; 
&gt; &gt; Does this patch maintain existing behavior, or does it create a new behavior
&gt; &gt; where WKContextSetCacheModel is now global instead of per-context? (How do
&gt; &gt; we know that it&apos;s OK to be global?)
&gt; This patch maintains existing behavior because every client using
&gt; WKContextSetCacheModel has one WKContextRef that they use in their process
&gt; for everything.

That&apos;s not necessarily true for GLib API users, though.

&gt;  This patch is necessary because we don&apos;t want the
&gt; NetworkProcess to get settings from any one ProcessPool.

Isn&apos;t there a network process per process pool?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572840</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 13:16:03 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; (In reply to Alex Christensen from comment #10)
&gt; &gt; (In reply to Geoffrey Garen from comment #9)
&gt; &gt; &gt; Longer-term, I think page caching should be a setting on the website data
&gt; &gt; &gt; store.
&gt; &gt; I think I agree.  That detail doesn&apos;t need to be decided for this patch.  It
&gt; &gt; does need to be decided for the replacement for WKContextSetCacheModel.
&gt; &gt; 
&gt; &gt; &gt; Does this patch maintain existing behavior, or does it create a new behavior
&gt; &gt; &gt; where WKContextSetCacheModel is now global instead of per-context? (How do
&gt; &gt; &gt; we know that it&apos;s OK to be global?)
&gt; &gt; This patch maintains existing behavior because every client using
&gt; &gt; WKContextSetCacheModel has one WKContextRef that they use in their process
&gt; &gt; for everything.
&gt; 
&gt; That&apos;s not necessarily true for GLib API users, though.
I think it&apos;s probably a good assumption, but you&apos;re right, there could be someone with two contexts that intentionally has different cache models.  I think that&apos;s unlikely in practice.  In any case, the cache-determining API needs to be moved to WebsiteDataStore, where the cache is.
&gt; 
&gt; &gt;  This patch is necessary because we don&apos;t want the
&gt; &gt; NetworkProcess to get settings from any one ProcessPool.
&gt; 
&gt; Isn&apos;t there a network process per process pool?
I&apos;m working to make it so there&apos;s only one network process.  That&apos;s why I&apos;m doing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572850</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-09-20 13:25:30 -0700</bug_when>
    <thetext>&gt; &gt; This patch maintains existing behavior because every client using
&gt; &gt; WKContextSetCacheModel has one WKContextRef that they use in their process
&gt; &gt; for everything.
&gt; 
&gt; That&apos;s not necessarily true for GLib API users, though.

What are the requirements for GLib API compatibility?

What is the best way to know if GLib API users need support for WKContextSetCacheModel on multiple WKContextRefs?

&gt; &gt;  This patch is necessary because we don&apos;t want the
&gt; &gt; NetworkProcess to get settings from any one ProcessPool.
&gt; 
&gt; Isn&apos;t there a network process per process pool?

The goal of this patch set is to change that behavior and establish a singleton network process per app. The WebsiteDataStore APIs are broken if you launch multiple network processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572852</commentid>
    <comment_count>15</comment_count>
      <attachid>379109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-09-20 13:29:06 -0700</bug_when>
    <thetext>Comment on attachment 379109
Patch

r=me

If this does create a problem for Glib API users, we should discuss further how to resolve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572859</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 13:37:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/r250148</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572861</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-20 13:38:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55570450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573259</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-23 02:14:07 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #13)
&gt; (In reply to Carlos Garcia Campos from comment #12)
&gt; &gt; (In reply to Alex Christensen from comment #10)
&gt; &gt; &gt; (In reply to Geoffrey Garen from comment #9)
&gt; &gt; &gt; &gt; Longer-term, I think page caching should be a setting on the website data
&gt; &gt; &gt; &gt; store.
&gt; &gt; &gt; I think I agree.  That detail doesn&apos;t need to be decided for this patch.  It
&gt; &gt; &gt; does need to be decided for the replacement for WKContextSetCacheModel.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Does this patch maintain existing behavior, or does it create a new behavior
&gt; &gt; &gt; &gt; where WKContextSetCacheModel is now global instead of per-context? (How do
&gt; &gt; &gt; &gt; we know that it&apos;s OK to be global?)
&gt; &gt; &gt; This patch maintains existing behavior because every client using
&gt; &gt; &gt; WKContextSetCacheModel has one WKContextRef that they use in their process
&gt; &gt; &gt; for everything.
&gt; &gt; 
&gt; &gt; That&apos;s not necessarily true for GLib API users, though.
&gt; I think it&apos;s probably a good assumption, but you&apos;re right, there could be
&gt; someone with two contexts that intentionally has different cache models.  I
&gt; think that&apos;s unlikely in practice.  In any case, the cache-determining API
&gt; needs to be moved to WebsiteDataStore, where the cache is.

Ah, no, that&apos;s not what I meant, I meant only using different contexts, I also think it&apos;s unlikely that they use a different cache model per context, though.

&gt; &gt; 
&gt; &gt; &gt;  This patch is necessary because we don&apos;t want the
&gt; &gt; &gt; NetworkProcess to get settings from any one ProcessPool.
&gt; &gt; 
&gt; &gt; Isn&apos;t there a network process per process pool?
&gt; I&apos;m working to make it so there&apos;s only one network process.  That&apos;s why I&apos;m
&gt; doing this.

Ok, now I understand. I hope we can just deprecate APIs but keeping backwards compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573260</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-23 02:22:25 -0700</bug_when>
    <thetext>A quick search in Debian shows only a few apps setting the cache model, and they either use a single context or the same model for all contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579652</commentid>
    <comment_count>20</comment_count>
      <attachid>379109</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 09:33:19 -0700</bug_when>
    <thetext>Comment on attachment 379109
Patch

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

&gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:74
&gt; +    bool usesPageCache() const { return m_usesPageCache; }

This seems to have introduced a regression. The cacheModel was obeyed by the WebContent process and was setting the PageCache&apos;s maxSize in the WebProcess. However, this m_usesPageCache flag only controls the UIProcess (i.e. creation of SuspendedPage proxies). However, it no longer updates the size of the PageCache in the WebProcess it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579661</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-14 09:51:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #20)
&gt; Comment on attachment 379109 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379109&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:74
&gt; &gt; +    bool usesPageCache() const { return m_usesPageCache; }
&gt; 
&gt; This seems to have introduced a regression. The cacheModel was obeyed by the
&gt; WebContent process and was setting the PageCache&apos;s maxSize in the
&gt; WebProcess. However, this m_usesPageCache flag only controls the UIProcess
&gt; (i.e. creation of SuspendedPage proxies). However, it no longer updates the
&gt; size of the PageCache in the WebProcess it seems.

Will likely deal with this at the same time as https://bugs.webkit.org/show_bug.cgi?id=202929.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379101</attachid>
            <date>2019-09-18 21:10:55 -0700</date>
            <delta_ts>2019-09-19 00:05:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201970-20190919131054.patch</filename>
            <type>text/plain</type>
            <size>19376</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAwODEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA5LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIExl
Z2FjeUdsb2JhbFNldHRpbmdzIGZvciBzZXR0aW5ncyB0aGUgTmV0d29ya1Byb2Nlc3MgbmVlZHMg
ZnJvbSBhIFdlYlByb2Nlc3NQb29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJJ20gc3RhcnRpbmcgYnkgbW92aW5nIHRoZSBjYWNoZSBtb2RlbCB0byB0
aGlzIG5ldyBhYnN0cmFjdGlvbi4KKyAgICAgICAgV2Ugd2VyZSB1c2luZyBpdCBpbiB0ZXN0cyB0
byBkaXNhYmxlIHRoZSBwYWdlIGNhY2hlLCB3aGljaCBzaG91bGQgYmUgZG9uZSB3aXRoIGEgYm9v
bGVhbiBvbiB0aGUgcG9vbCBjb25maWd1cmF0aW9uLCBub3QgYnkgY2hhbmdpbmcgdGhlIGNhY2hl
IG1vZGVsLgorICAgICAgICBXZSB3ZXJlIGFsc28gdXNpbmcgaXQgaW4gV0tDb250ZXh0U2V0Q2Fj
aGVNb2RlbCB3aGljaCBoYXMgc2V2ZXJhbCBjbGllbnRzIHRoYXQgd29uJ3QgY2hhbmdlIHF1aWNr
bHksIHNvIHRoaXMgYWJzdHJhY3Rpb24gaXMgdXNlZCB0byBtYWludGFpbiBleGlzdGluZyBiZWhh
dmlvci4KKyAgICAgICAgSSBuZWVkIHRoaXMgc28gSSBjYW4gbWFrZSBhIE5ldHdvcmtQcm9jZXNz
IG5vdCBkZXBlbmQgb24gYW55dGhpbmcgZnJvbSBhIFdlYlByb2Nlc3NQb29sIHdoZW4gc3RhcnRp
bmcuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldENhY2hlTW9kZWwpOgorICAgICAgICAoV0tDb250
ZXh0R2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBwYWdlQ2FjaGVFbmFibGVkXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRQYWdlQ2FjaGVFbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
ZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lH
bG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5R2xvYmFs
U2V0dGluZ3M6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MZWdhY3lHbG9i
YWxTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGVnYWN5R2xvYmFsU2V0dGlu
Z3M6OmNhY2hlTW9kZWwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZUNhcGFjaXR5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGVjcmVhc2UgdXNlIG9mIHNlc3Npb25JRCBpbiBXZWJMb2FkZXJT
dHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDcgQEAgVUlQcm9j
ZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAogVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAorVUlQcm9j
ZXNzL0xlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcAogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
CiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeUdsb2Jh
bFNldHRpbmdzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
ZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0xlZ2FjeUdsb2JhbFNldHRpbmdzOjpMZWdhY3lHbG9iYWxTZXR0
aW5ncygpID0gZGVmYXVsdDsKKworTGVnYWN5R2xvYmFsU2V0dGluZ3MmIExlZ2FjeUdsb2JhbFNl
dHRpbmdzOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMZWdhY3lH
bG9iYWxTZXR0aW5ncz4gcHJvcGVydGllczsKKyAgICByZXR1cm4gcHJvcGVydGllcy5nZXQoKTsK
K30KKwordm9pZCBMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCit7CisgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKKyAgICBmb3Ig
KGF1dG8gcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisg
ICAgICAgIHByb2Nlc3NQb29sLT5zZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeUds
b2JhbFNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVn
YWN5R2xvYmFsU2V0dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TGVnYWN5R2xvYmFsU2V0dGluZ3MgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0YXRpYyBMZWdhY3lHbG9iYWxTZXR0aW5ncyYgc2luZ2xldG9uKCk7CisgICAg
CisgICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOworICAgIENhY2hlTW9kZWwgY2Fj
aGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQorICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TGVnYWN5R2xvYmFsU2V0dGluZ3M+Owor
ICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzKCk7CisgICAgCisgICAgQ2FjaGVNb2RlbCBtX2NhY2hl
TW9kZWwgeyBDYWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKIAorI2luY2x1ZGUg
IkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0xNTAs
NyArMTUxLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOgogCiB2
b2lkIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sKQogewotICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dl
YlByb2Nlc3NDYWNoZSgpIHx8IHByb2Nlc3NQb29sLmNhY2hlTW9kZWwoKSAhPSBDYWNoZU1vZGVs
OjpQcmltYXJ5V2ViQnJvd3NlcikgeworICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlv
bigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0
aW9uKCkudXNlc1dlYlByb2Nlc3NDYWNoZSgpIHx8IExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5n
bGV0b24oKS5jYWNoZU1vZGVsKCkgIT0gQ2FjaGVNb2RlbDo6UHJpbWFyeVdlYkJyb3dzZXIpIHsK
ICAgICAgICAgaWYgKCFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uKCkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHk6IENhY2hlIGlzIGRpc2FibGVkIGJl
Y2F1c2UgcHJvY2VzcyBzd2FwIG9uIG5hdmlnYXRpb24gaXMgZGlzYWJsZWQiLCB0aGlzKTsKICAg
ICAgICAgZWxzZSBpZiAoIXByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS51c2VzV2ViUHJvY2Vz
c0NhY2hlKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtpbmdIYXNCZWd1bigpOwogICAgIH0KIAotICAg
IHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKKyAgICBwYXJhbWV0ZXJzLmNh
Y2hlTW9kZWwgPSBMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgp
OwogICAgIHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSBt
X2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogCiAgICAgZm9yIChhdXRvJiBz
Y2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKQEAg
LTk0MSw3ICs5NDEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJv
CiAgICAgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZEZyb21EZWZhdWx0cygp
OwogI2VuZGlmCiAKLSAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBjYWNoZU1vZGVsKCk7Cisg
ICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRv
bigpLmNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IGNvbmZpZ3VyYXRp
b24oKS5vdmVycmlkZUxhbmd1YWdlcygpLmlzRW1wdHkoKSA/IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKSA6IGNvbmZpZ3VyYXRpb24oKS5vdmVycmlkZUxhbmd1YWdlcygpOwogCiAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlEb2N1bWVudCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50KTsKQEAgLTE1OTcsMTAgKzE1OTcsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBcwogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKQogeworICAgIGlmICghbV9j
b25maWd1cmF0aW9uLT51c2VzUGFnZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHVu
c2lnbmVkIGR1bW15ID0gMDsKICAgICBTZWNvbmRzIGR1bW15SW50ZXJ2YWw7CiAgICAgdW5zaWdu
ZWQgcGFnZUNhY2hlU2l6ZSA9IDA7Ci0gICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhtX2Nv
bmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKSwgZHVtbXksIGR1bW15LCBkdW1teSwgZHVtbXlJbnRl
cnZhbCwgcGFnZUNhY2hlU2l6ZSk7CisgICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhMZWdh
Y3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpLCBkdW1teSwgZHVtbXks
IGR1bW15LCBkdW1teUludGVydmFsLCBwYWdlQ2FjaGVTaXplKTsKIAogICAgIG1fbWF4U3VzcGVu
ZGVkUGFnZUNvdW50ID0gcGFnZUNhY2hlU2l6ZTsKIApAQCAtMTYxMCw3ICsxNjEzLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUAogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CiAgICAgdXBkYXRlTWF4U3VzcGVu
ZGVkUGFnZUNvdW50KCk7CiAKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNyAr
Mjc2LDYgQEAgcHVibGljOgogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUo
KSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbChDYWNoZU1vZGVsKTsKLSAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKTsgfQogCiAgICAgdm9pZCBzZXRE
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAkocmV2aXNpb24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvbwogewog
ICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAgY29weS0+bV9jYWNoZU1vZGVs
ID0gdGhpcy0+bV9jYWNoZU1vZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxh
dGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkOwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRo
aXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKQEAgLTExMyw2ICsxMTIsNyBAQCBSZWY8
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgY29weS0+bV9wcm9jZXNz
U3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbldpbmRv
d09wZW5XaXRoT3BlbmVyOwogICAgIGNvcHktPm1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0Vu
YWJsZWRCeUNsaWVudCA9IHRoaXMtPm1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWRC
eUNsaWVudDsKICAgICBjb3B5LT5tX3VzZXNXZWJQcm9jZXNzQ2FjaGUgPSB0aGlzLT5tX3VzZXNX
ZWJQcm9jZXNzQ2FjaGU7CisgICAgY29weS0+bV91c2VzUGFnZUNhY2hlID0gdGhpcy0+bV91c2Vz
UGFnZUNhY2hlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvcHktPm1fc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlID0gdGhpcy0+bV9zdXBwcmVzc2VzQ29u
bmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUg
KzcwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoYm9vbCB2
YWx1ZSkgeyBtX3VzZXNXZWJQcm9jZXNzQ2FjaGUgPSB2YWx1ZTsgfQogICAgIGJvb2wgdXNlc1dl
YlByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1dlYlByb2Nlc3NDYWNoZTsgfQog
CisgICAgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wgdmFsdWUpIHsgbV91c2VzUGFnZUNhY2hl
ID0gdmFsdWU7IH0KKyAgICBib29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXNQYWdlQ2FjaGU7IH0KKyAgICAKICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRv
bWF0aWNQcm9jZXNzUHJld2FybWluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5l
Zml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRX
b3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBt
X2NsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVl
OyB9CiAKICAgICBib29sIGRpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7IH0K
ICAgICB2b2lkIHNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KIAotICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZU1vZGVsOyB9Ci0gICAgdm9pZCBzZXRDYWNoZU1vZGVsKFdlYktpdDo6Q2FjaGVN
b2RlbCBjYWNoZU1vZGVsKSB7IG1fY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7IH0KLQogICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KSB7IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3Rvcnk7IH0KIApAQCAtMTg2LDcgKzE4Niw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0g
ICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbDo6
UHJpbWFyeVdlYkJyb3dzZXIgfTsKIAogICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWU7CkBAIC0yMTgsNiArMjE3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9u
YWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OwogICAg
IGJvb2wgbV91c2VzV2ViUHJvY2Vzc0NhY2hlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXNlc1Bh
Z2VDYWNoZSB7IHRydWUgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9t
YXRpY1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3Rv
bVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1fc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNp
bmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmgiCkBAIC0zMjAsMTIgKzMyMSwxMiBAQCB2b2lkIFdLQ29udGV4dENsZWFyVmlzaXRlZExpbmtz
KFdLQ29udGV4CiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVNb2Rl
bCkpOworICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRDYWNoZU1vZGVs
KFdlYktpdDo6dG9DYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIH0KIAogV0tDYWNoZU1vZGVsIFdL
Q29udGV4dEdldENhY2hlTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmNhY2hlTW9kZWwo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmds
ZXRvbigpLmNhY2hlTW9kZWwoKSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11bU51bWJl
ck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiwgdW5zaWduZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiTGVnYWN5R2xv
YmFsU2V0dGluZ3MuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0
aW9uIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbgpAQCAtMjg3LDE1ICsyODgsMTIgQEAgLSAo
Qk9PTClwcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbgogCiAtIChCT09MKXBhZ2VDYWNo
ZUVuYWJsZWQKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVN
b2RlbCgpICE9IFdlYktpdDo6Q2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7CisgICAgcmV0dXJu
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAogLSAodm9p
ZClzZXRQYWdlQ2FjaGVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBpZiAoIWVuYWJsZWQp
Ci0gICAgICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlTW9kZWwoV2ViS2l0
OjpDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcik7Ci0gICAgZWxzZSBpZiAoIVtzZWxmIHBhZ2VD
YWNoZUVuYWJsZWRdKQotICAgICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRDYWNo
ZU1vZGVsKFdlYktpdDo6Q2FjaGVNb2RlbDo6UHJpbWFyeVdlYkJyb3dzZXIpOworICAgIHJldHVy
biBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRVc2VzUGFnZUNhY2hlKGVuYWJsZWQpOwog
fQogCiAtIChCT09MKXVzZXNTaW5nbGVXZWJQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MDAxOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MjUsNiArMTcyNSw4IEBACiAJCQljb21waWxlclNwZWMgPSBjb20uYXBwbGUu
Y29tcGlsZXJzLnByb3h5LnNjcmlwdDsKIAkJCWZpbGVQYXR0ZXJucyA9ICIqLmgiOwogCQkJZmls
ZVR5cGUgPSBwYXR0ZXJuLnByb3h5OworCQkJaW5wdXRGaWxlcyA9ICgKKwkJCSk7CiAJCQlpc0Vk
aXRhYmxlID0gMTsKIAkJCW91dHB1dEZpbGVzID0gKAogCQkJCSIkKEhFQURFUl9PVVRQVVRfRElS
KS8kKElOUFVUX0ZJTEVfTkFNRSkiLApAQCAtMzY5NCw2ICszNjk2LDggQEAKIAkJNUNFOTEyMEIy
MjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS01haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFOTEyMEMyMjkz
QzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLTWFpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFOTEy
MEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcDsgcGF0
aCA9IENvY29hL0F1eGlsaWFyeVByb2Nlc3NNYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNFQUJBMkEyMzMzMjQ3NzAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUdsb2JhbFNldHRpbmdz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDRUFCQTJCMjMzMzI1MTQwMDc5Nzc5
NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDRkVDQjAzMUUxRUQxQzgwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtNzc1NSw2ICs3NzU5LDggQEAKIAkJCQk4MzlBMkYzMDFFMjA2NzM5MDAzOTA1N0UgLyogSGln
aFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCAqLywKIAkJCQlBNUUzOTFGQjIxODND
MUU5MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwICovLAogCQkJCUE1RTM5MUZD
MjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5oICovLAorCQkJCTVDRUFC
QTJCMjMzMzI1MTQwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8sCisJCQkJ
NUNFQUJBMkEyMzMzMjQ3NzAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmggKi8sCiAJ
CQkJMzE2MDdGMzgxOTYyNzAwMjAwOUI4N0RBIC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5o
ICovLAogCQkJCUJDNkVEQUE1MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi8sCiAJ
CQkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379108</attachid>
            <date>2019-09-19 00:05:35 -0700</date>
            <delta_ts>2019-09-19 00:14:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201970-20190919160533.patch</filename>
            <type>text/plain</type>
            <size>21253</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAwODEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA5LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIExl
Z2FjeUdsb2JhbFNldHRpbmdzIGZvciBzZXR0aW5ncyB0aGUgTmV0d29ya1Byb2Nlc3MgbmVlZHMg
ZnJvbSBhIFdlYlByb2Nlc3NQb29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJJ20gc3RhcnRpbmcgYnkgbW92aW5nIHRoZSBjYWNoZSBtb2RlbCB0byB0
aGlzIG5ldyBhYnN0cmFjdGlvbi4KKyAgICAgICAgV2Ugd2VyZSB1c2luZyBpdCBpbiB0ZXN0cyB0
byBkaXNhYmxlIHRoZSBwYWdlIGNhY2hlLCB3aGljaCBzaG91bGQgYmUgZG9uZSB3aXRoIGEgYm9v
bGVhbiBvbiB0aGUgcG9vbCBjb25maWd1cmF0aW9uLCBub3QgYnkgY2hhbmdpbmcgdGhlIGNhY2hl
IG1vZGVsLgorICAgICAgICBXZSB3ZXJlIGFsc28gdXNpbmcgaXQgaW4gV0tDb250ZXh0U2V0Q2Fj
aGVNb2RlbCB3aGljaCBoYXMgc2V2ZXJhbCBjbGllbnRzIHRoYXQgd29uJ3QgY2hhbmdlIHF1aWNr
bHksIHNvIHRoaXMgYWJzdHJhY3Rpb24gaXMgdXNlZCB0byBtYWludGFpbiBleGlzdGluZyBiZWhh
dmlvci4KKyAgICAgICAgSSBuZWVkIHRoaXMgc28gSSBjYW4gbWFrZSBhIE5ldHdvcmtQcm9jZXNz
IG5vdCBkZXBlbmQgb24gYW55dGhpbmcgZnJvbSBhIFdlYlByb2Nlc3NQb29sIHdoZW4gc3RhcnRp
bmcuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldENhY2hlTW9kZWwpOgorICAgICAgICAoV0tDb250
ZXh0R2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBwYWdlQ2FjaGVFbmFibGVkXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRQYWdlQ2FjaGVFbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
ZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lH
bG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5R2xvYmFs
U2V0dGluZ3M6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MZWdhY3lHbG9i
YWxTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGVnYWN5R2xvYmFsU2V0dGlu
Z3M6OmNhY2hlTW9kZWwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZUNhcGFjaXR5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGVjcmVhc2UgdXNlIG9mIHNlc3Npb25JRCBpbiBXZWJMb2FkZXJT
dHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDcgQEAgVUlQcm9j
ZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAogVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAorVUlQcm9j
ZXNzL0xlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcAogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
CiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeUdsb2Jh
bFNldHRpbmdzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
ZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0xlZ2FjeUdsb2JhbFNldHRpbmdzOjpMZWdhY3lHbG9iYWxTZXR0
aW5ncygpID0gZGVmYXVsdDsKKworTGVnYWN5R2xvYmFsU2V0dGluZ3MmIExlZ2FjeUdsb2JhbFNl
dHRpbmdzOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMZWdhY3lH
bG9iYWxTZXR0aW5ncz4gcHJvcGVydGllczsKKyAgICByZXR1cm4gcHJvcGVydGllcy5nZXQoKTsK
K30KKwordm9pZCBMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCit7CisgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKKyAgICBmb3Ig
KGF1dG8gcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisg
ICAgICAgIHByb2Nlc3NQb29sLT5zZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeUds
b2JhbFNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVn
YWN5R2xvYmFsU2V0dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TGVnYWN5R2xvYmFsU2V0dGluZ3MgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0YXRpYyBMZWdhY3lHbG9iYWxTZXR0aW5ncyYgc2luZ2xldG9uKCk7CisgICAg
CisgICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOworICAgIENhY2hlTW9kZWwgY2Fj
aGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQorICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TGVnYWN5R2xvYmFsU2V0dGluZ3M+Owor
ICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzKCk7CisgICAgCisgICAgQ2FjaGVNb2RlbCBtX2NhY2hl
TW9kZWwgeyBDYWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKIAorI2luY2x1ZGUg
IkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0xNTAs
NyArMTUxLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOgogCiB2
b2lkIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sKQogewotICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dl
YlByb2Nlc3NDYWNoZSgpIHx8IHByb2Nlc3NQb29sLmNhY2hlTW9kZWwoKSAhPSBDYWNoZU1vZGVs
OjpQcmltYXJ5V2ViQnJvd3NlcikgeworICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlv
bigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0
aW9uKCkudXNlc1dlYlByb2Nlc3NDYWNoZSgpIHx8IExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5n
bGV0b24oKS5jYWNoZU1vZGVsKCkgIT0gQ2FjaGVNb2RlbDo6UHJpbWFyeVdlYkJyb3dzZXIpIHsK
ICAgICAgICAgaWYgKCFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uKCkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHk6IENhY2hlIGlzIGRpc2FibGVkIGJl
Y2F1c2UgcHJvY2VzcyBzd2FwIG9uIG5hdmlnYXRpb24gaXMgZGlzYWJsZWQiLCB0aGlzKTsKICAg
ICAgICAgZWxzZSBpZiAoIXByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS51c2VzV2ViUHJvY2Vz
c0NhY2hlKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtpbmdIYXNCZWd1bigpOwogICAgIH0KIAotICAg
IHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKKyAgICBwYXJhbWV0ZXJzLmNh
Y2hlTW9kZWwgPSBMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgp
OwogICAgIHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSBt
X2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogCiAgICAgZm9yIChhdXRvJiBz
Y2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKQEAg
LTk0MSw3ICs5NDEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJv
CiAgICAgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZEZyb21EZWZhdWx0cygp
OwogI2VuZGlmCiAKLSAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBjYWNoZU1vZGVsKCk7Cisg
ICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRv
bigpLmNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IGNvbmZpZ3VyYXRp
b24oKS5vdmVycmlkZUxhbmd1YWdlcygpLmlzRW1wdHkoKSA/IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKSA6IGNvbmZpZ3VyYXRpb24oKS5vdmVycmlkZUxhbmd1YWdlcygpOwogCiAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlEb2N1bWVudCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50KTsKQEAgLTE1OTcsMTAgKzE1OTcsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBcwogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKQogeworICAgIGlmICghbV9j
b25maWd1cmF0aW9uLT51c2VzUGFnZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHVu
c2lnbmVkIGR1bW15ID0gMDsKICAgICBTZWNvbmRzIGR1bW15SW50ZXJ2YWw7CiAgICAgdW5zaWdu
ZWQgcGFnZUNhY2hlU2l6ZSA9IDA7Ci0gICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhtX2Nv
bmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKSwgZHVtbXksIGR1bW15LCBkdW1teSwgZHVtbXlJbnRl
cnZhbCwgcGFnZUNhY2hlU2l6ZSk7CisgICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhMZWdh
Y3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpLCBkdW1teSwgZHVtbXks
IGR1bW15LCBkdW1teUludGVydmFsLCBwYWdlQ2FjaGVTaXplKTsKIAogICAgIG1fbWF4U3VzcGVu
ZGVkUGFnZUNvdW50ID0gcGFnZUNhY2hlU2l6ZTsKIApAQCAtMTYxMCw3ICsxNjEzLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUAogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CiAgICAgdXBkYXRlTWF4U3VzcGVu
ZGVkUGFnZUNvdW50KCk7CiAKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNyAr
Mjc2LDYgQEAgcHVibGljOgogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUo
KSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbChDYWNoZU1vZGVsKTsKLSAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKTsgfQogCiAgICAgdm9pZCBzZXRE
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAkocmV2aXNpb24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvbwogewog
ICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAgY29weS0+bV9jYWNoZU1vZGVs
ID0gdGhpcy0+bV9jYWNoZU1vZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxh
dGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkOwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRo
aXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKQEAgLTExMyw2ICsxMTIsNyBAQCBSZWY8
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgY29weS0+bV9wcm9jZXNz
U3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbldpbmRv
d09wZW5XaXRoT3BlbmVyOwogICAgIGNvcHktPm1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0Vu
YWJsZWRCeUNsaWVudCA9IHRoaXMtPm1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWRC
eUNsaWVudDsKICAgICBjb3B5LT5tX3VzZXNXZWJQcm9jZXNzQ2FjaGUgPSB0aGlzLT5tX3VzZXNX
ZWJQcm9jZXNzQ2FjaGU7CisgICAgY29weS0+bV91c2VzUGFnZUNhY2hlID0gdGhpcy0+bV91c2Vz
UGFnZUNhY2hlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvcHktPm1fc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlID0gdGhpcy0+bV9zdXBwcmVzc2VzQ29u
bmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUg
KzcwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoYm9vbCB2
YWx1ZSkgeyBtX3VzZXNXZWJQcm9jZXNzQ2FjaGUgPSB2YWx1ZTsgfQogICAgIGJvb2wgdXNlc1dl
YlByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1dlYlByb2Nlc3NDYWNoZTsgfQog
CisgICAgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wgdmFsdWUpIHsgbV91c2VzUGFnZUNhY2hl
ID0gdmFsdWU7IH0KKyAgICBib29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXNQYWdlQ2FjaGU7IH0KKyAgICAKICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRv
bWF0aWNQcm9jZXNzUHJld2FybWluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5l
Zml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRX
b3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBt
X2NsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVl
OyB9CiAKICAgICBib29sIGRpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7IH0K
ICAgICB2b2lkIHNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KIAotICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZU1vZGVsOyB9Ci0gICAgdm9pZCBzZXRDYWNoZU1vZGVsKFdlYktpdDo6Q2FjaGVN
b2RlbCBjYWNoZU1vZGVsKSB7IG1fY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7IH0KLQogICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KSB7IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3Rvcnk7IH0KIApAQCAtMTg2LDcgKzE4Niw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0g
ICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbDo6
UHJpbWFyeVdlYkJyb3dzZXIgfTsKIAogICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWU7CkBAIC0yMTgsNiArMjE3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9u
YWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OwogICAg
IGJvb2wgbV91c2VzV2ViUHJvY2Vzc0NhY2hlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXNlc1Bh
Z2VDYWNoZSB7IHRydWUgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9t
YXRpY1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3Rv
bVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1fc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNp
bmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmgiCkBAIC0zMjAsMTIgKzMyMSwxMiBAQCB2b2lkIFdLQ29udGV4dENsZWFyVmlzaXRlZExpbmtz
KFdLQ29udGV4CiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVNb2Rl
bCkpOworICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRDYWNoZU1vZGVs
KFdlYktpdDo6dG9DYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIH0KIAogV0tDYWNoZU1vZGVsIFdL
Q29udGV4dEdldENhY2hlTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmNhY2hlTW9kZWwo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmds
ZXRvbigpLmNhY2hlTW9kZWwoKSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11bU51bWJl
ck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiwgdW5zaWduZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiTGVnYWN5R2xv
YmFsU2V0dGluZ3MuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0
aW9uIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbgpAQCAtMjg3LDE1ICsyODgsMTIgQEAgLSAo
Qk9PTClwcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbgogCiAtIChCT09MKXBhZ2VDYWNo
ZUVuYWJsZWQKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVN
b2RlbCgpICE9IFdlYktpdDo6Q2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7CisgICAgcmV0dXJu
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAogLSAodm9p
ZClzZXRQYWdlQ2FjaGVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBpZiAoIWVuYWJsZWQp
Ci0gICAgICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlTW9kZWwoV2ViS2l0
OjpDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcik7Ci0gICAgZWxzZSBpZiAoIVtzZWxmIHBhZ2VD
YWNoZUVuYWJsZWRdKQotICAgICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRDYWNo
ZU1vZGVsKFdlYktpdDo6Q2FjaGVNb2RlbDo6UHJpbWFyeVdlYkJyb3dzZXIpOworICAgIHJldHVy
biBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRVc2VzUGFnZUNhY2hlKGVuYWJsZWQpOwog
fQogCiAtIChCT09MKXVzZXNTaW5nbGVXZWJQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNp
b24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tl
clN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKQEAgLTcxMSwxMiAr
NzEyLDEwIEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2EKICAqIHNw
ZWNpZnlpbmcgJVdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVIuIFRoZSBkZWZhdWx0
IHZhbHVlIGlzCiAgKiAlV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSLgogICovCi12b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0Q2FjaGVNb2RlbCBtb2RlbCkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9jYWNoZV9tb2RlbChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0Q2FjaGVNb2RlbCBtb2RlbCkK
IHsKICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWw7CiAKLSAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0KICAgICBzd2l0Y2ggKG1vZGVsKSB7CiAg
ICAgY2FzZSBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSOgogICAgICAgICBjYWNo
ZU1vZGVsID0gQ2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7CkBAIC03MzEsOCArNzMwLDggQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsKAogICAgICAgICBnX2Fzc2Vy
dF9ub3RfcmVhY2hlZCgpOwogICAgIH0KIAotICAgIGlmIChjYWNoZU1vZGVsICE9IGNvbnRleHQt
PnByaXYtPnByb2Nlc3NQb29sLT5jYWNoZU1vZGVsKCkpCi0gICAgICAgIGNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sLT5zZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworICAgIGlmIChjYWNoZU1v
ZGVsICE9IExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1vZGVsKCkpCisg
ICAgICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRDYWNoZU1vZGVsKGNh
Y2hlTW9kZWwpOwogfQogCiAvKioKQEAgLTc0OSw3ICs3NDgsNyBAQCBXZWJLaXRDYWNoZU1vZGVs
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dT
RVIpOwogCi0gICAgc3dpdGNoIChjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y2FjaGVNb2Rl
bCgpKSB7CisgICAgc3dpdGNoIChMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2Fj
aGVNb2RlbCgpKSB7CiAgICAgY2FzZSBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcjoKICAgICAg
ICAgcmV0dXJuIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVI7CiAgICAgY2FzZSBD
YWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlcjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUwMDE5KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTcyNSw2ICsxNzI1LDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5hcHBsZS5jb21w
aWxlcnMucHJveHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJCQlmaWxlVHlw
ZSA9IHBhdHRlcm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJCWlzRWRpdGFi
bGUgPSAxOwogCQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBVVF9ESVIpLyQo
SU5QVVRfRklMRV9OQU1FKSIsCkBAIC0zNjk0LDYgKzM2OTYsOCBAQAogCQk1Q0U5MTIwQjIyOTND
MUUwMDA1QkVDNzggLyogV0tNYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLTWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0U5MTIwQzIyOTNDMUUw
MDA1QkVDNzggLyogV0tNYWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0U5MTIwRjIy
OTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBwYXRoID0g
Q29jb2EvQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1Q0VBQkEyQTIzMzMyNDc3MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8q
IExlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNGRUNCMDMxRTFFRDFDODAwRjg4NTA0IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFE
NzNGMTExNkZGOTBDMDBFRTUzOTYgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNs
aWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC03
NzU1LDYgKzc3NTksOCBAQAogCQkJCTgzOUEyRjMwMUUyMDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVy
Zm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oICovLAogCQkJCUE1RTM5MUZCMjE4M0MxRTkw
MEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgKi8sCiAJCQkJQTVFMzkxRkMyMTgz
QzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggKi8sCisJCQkJNUNFQUJBMkIy
MzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcCAqLywKKwkJCQk1Q0VB
QkEyQTIzMzMyNDc3MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLywKIAkJCQkz
MTYwN0YzODE5NjI3MDAyMDA5Qjg3REEgLyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8s
CiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAqLywKIAkJCQkx
QUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379109</attachid>
            <date>2019-09-19 00:14:15 -0700</date>
            <delta_ts>2019-09-20 13:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201970-20190919161413.patch</filename>
            <type>text/plain</type>
            <size>22189</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAwODEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA5LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIExl
Z2FjeUdsb2JhbFNldHRpbmdzIGZvciBzZXR0aW5ncyB0aGUgTmV0d29ya1Byb2Nlc3MgbmVlZHMg
ZnJvbSBhIFdlYlByb2Nlc3NQb29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJJ20gc3RhcnRpbmcgYnkgbW92aW5nIHRoZSBjYWNoZSBtb2RlbCB0byB0
aGlzIG5ldyBhYnN0cmFjdGlvbi4KKyAgICAgICAgV2Ugd2VyZSB1c2luZyBpdCBpbiB0ZXN0cyB0
byBkaXNhYmxlIHRoZSBwYWdlIGNhY2hlLCB3aGljaCBzaG91bGQgYmUgZG9uZSB3aXRoIGEgYm9v
bGVhbiBvbiB0aGUgcG9vbCBjb25maWd1cmF0aW9uLCBub3QgYnkgY2hhbmdpbmcgdGhlIGNhY2hl
IG1vZGVsLgorICAgICAgICBXZSB3ZXJlIGFsc28gdXNpbmcgaXQgaW4gV0tDb250ZXh0U2V0Q2Fj
aGVNb2RlbCB3aGljaCBoYXMgc2V2ZXJhbCBjbGllbnRzIHRoYXQgd29uJ3QgY2hhbmdlIHF1aWNr
bHksIHNvIHRoaXMgYWJzdHJhY3Rpb24gaXMgdXNlZCB0byBtYWludGFpbiBleGlzdGluZyBiZWhh
dmlvci4KKyAgICAgICAgSSBuZWVkIHRoaXMgc28gSSBjYW4gbWFrZSBhIE5ldHdvcmtQcm9jZXNz
IG5vdCBkZXBlbmQgb24gYW55dGhpbmcgZnJvbSBhIFdlYlByb2Nlc3NQb29sIHdoZW4gc3RhcnRp
bmcuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldENhY2hlTW9kZWwpOgorICAgICAgICAoV0tDb250
ZXh0R2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBwYWdlQ2FjaGVFbmFibGVkXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRQYWdlQ2FjaGVFbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
ZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lH
bG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5R2xvYmFs
U2V0dGluZ3M6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MZWdhY3lHbG9i
YWxTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TGVnYWN5R2xvYmFsU2V0dGlu
Z3M6OmNhY2hlTW9kZWwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZUNhcGFjaXR5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRGVjcmVhc2UgdXNlIG9mIHNlc3Npb25JRCBpbiBXZWJMb2FkZXJT
dHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDcgQEAgVUlQcm9j
ZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAogVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAorVUlQcm9j
ZXNzL0xlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcAogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3Bw
CiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeUdsb2Jh
bFNldHRpbmdzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
ZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0xlZ2FjeUdsb2JhbFNldHRpbmdzOjpMZWdhY3lHbG9iYWxTZXR0
aW5ncygpID0gZGVmYXVsdDsKKworTGVnYWN5R2xvYmFsU2V0dGluZ3MmIExlZ2FjeUdsb2JhbFNl
dHRpbmdzOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMZWdhY3lH
bG9iYWxTZXR0aW5ncz4gcHJvcGVydGllczsKKyAgICByZXR1cm4gcHJvcGVydGllcy5nZXQoKTsK
K30KKwordm9pZCBMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCit7CisgICAgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKKyAgICBmb3Ig
KGF1dG8gcHJvY2Vzc1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCisg
ICAgICAgIHByb2Nlc3NQb29sLT5zZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xlZ2FjeUds
b2JhbFNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGVn
YWN5R2xvYmFsU2V0dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TGVnYWN5R2xvYmFsU2V0dGluZ3MgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0YXRpYyBMZWdhY3lHbG9iYWxTZXR0aW5ncyYgc2luZ2xldG9uKCk7CisgICAg
CisgICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOworICAgIENhY2hlTW9kZWwgY2Fj
aGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQorICAgIAorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8TGVnYWN5R2xvYmFsU2V0dGluZ3M+Owor
ICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzKCk7CisgICAgCisgICAgQ2FjaGVNb2RlbCBtX2NhY2hl
TW9kZWwgeyBDYWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKIAorI2luY2x1ZGUg
IkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0xNTAs
NyArMTUxLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOgogCiB2
b2lkIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sKQogewotICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dl
YlByb2Nlc3NDYWNoZSgpIHx8IHByb2Nlc3NQb29sLmNhY2hlTW9kZWwoKSAhPSBDYWNoZU1vZGVs
OjpQcmltYXJ5V2ViQnJvd3NlcikgeworICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlv
bigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0
aW9uKCkudXNlc1dlYlByb2Nlc3NDYWNoZSgpIHx8IExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5n
bGV0b24oKS5jYWNoZU1vZGVsKCkgIT0gQ2FjaGVNb2RlbDo6UHJpbWFyeVdlYkJyb3dzZXIpIHsK
ICAgICAgICAgaWYgKCFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uKCkpCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHk6IENhY2hlIGlzIGRpc2FibGVkIGJl
Y2F1c2UgcHJvY2VzcyBzd2FwIG9uIG5hdmlnYXRpb24gaXMgZGlzYWJsZWQiLCB0aGlzKTsKICAg
ICAgICAgZWxzZSBpZiAoIXByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS51c2VzV2ViUHJvY2Vz
c0NhY2hlKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Myw3ICs0OTMsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtpbmdIYXNCZWd1bigpOwogICAgIH0KIAotICAg
IHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKKyAgICBwYXJhbWV0ZXJzLmNh
Y2hlTW9kZWwgPSBMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgp
OwogICAgIHBhcmFtZXRlcnMuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24gPSBt
X2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogCiAgICAgZm9yIChhdXRvJiBz
Y2hlbWUgOiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKQEAg
LTk0MSw3ICs5NDEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJv
CiAgICAgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZEZyb21EZWZhdWx0cygp
OwogI2VuZGlmCiAKLSAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBjYWNoZU1vZGVsKCk7Cisg
ICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRv
bigpLmNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IGNvbmZpZ3VyYXRp
b24oKS5vdmVycmlkZUxhbmd1YWdlcygpLmlzRW1wdHkoKSA/IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKSA6IGNvbmZpZ3VyYXRpb24oKS5vdmVycmlkZUxhbmd1YWdlcygpOwogCiAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlEb2N1bWVudCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50KTsKQEAgLTE1OTcsMTAgKzE1OTcsMTMg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBcwogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKQogeworICAgIGlmICghbV9j
b25maWd1cmF0aW9uLT51c2VzUGFnZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHVu
c2lnbmVkIGR1bW15ID0gMDsKICAgICBTZWNvbmRzIGR1bW15SW50ZXJ2YWw7CiAgICAgdW5zaWdu
ZWQgcGFnZUNhY2hlU2l6ZSA9IDA7Ci0gICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhtX2Nv
bmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKSwgZHVtbXksIGR1bW15LCBkdW1teSwgZHVtbXlJbnRl
cnZhbCwgcGFnZUNhY2hlU2l6ZSk7CisgICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhMZWdh
Y3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpLCBkdW1teSwgZHVtbXks
IGR1bW15LCBkdW1teUludGVydmFsLCBwYWdlQ2FjaGVTaXplKTsKIAogICAgIG1fbWF4U3VzcGVu
ZGVkUGFnZUNvdW50ID0gcGFnZUNhY2hlU2l6ZTsKIApAQCAtMTYxMCw3ICsxNjEzLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUAogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CiAgICAgdXBkYXRlTWF4U3VzcGVu
ZGVkUGFnZUNvdW50KCk7CiAKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNTAwMTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNyAr
Mjc2LDYgQEAgcHVibGljOgogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUo
KSB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rU3RvcmUuZ2V0KCk7IH0KIAogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbChDYWNoZU1vZGVsKTsKLSAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7
IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKTsgfQogCiAgICAgdm9pZCBzZXRE
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAkocmV2aXNpb24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDYgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvbwogewog
ICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCi0gICAgY29weS0+bV9jYWNoZU1vZGVs
ID0gdGhpcy0+bV9jYWNoZU1vZGVsOwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxh
dGl2ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkOwogICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRo
aXMtPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKQEAgLTExMyw2ICsxMTIsNyBAQCBSZWY8
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgY29weS0+bV9wcm9jZXNz
U3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbldpbmRv
d09wZW5XaXRoT3BlbmVyOwogICAgIGNvcHktPm1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0Vu
YWJsZWRCeUNsaWVudCA9IHRoaXMtPm1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWRC
eUNsaWVudDsKICAgICBjb3B5LT5tX3VzZXNXZWJQcm9jZXNzQ2FjaGUgPSB0aGlzLT5tX3VzZXNX
ZWJQcm9jZXNzQ2FjaGU7CisgICAgY29weS0+bV91c2VzUGFnZUNhY2hlID0gdGhpcy0+bV91c2Vz
UGFnZUNhY2hlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvcHktPm1fc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlID0gdGhpcy0+bV9zdXBwcmVzc2VzQ29u
bmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUg
KzcwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoYm9vbCB2
YWx1ZSkgeyBtX3VzZXNXZWJQcm9jZXNzQ2FjaGUgPSB2YWx1ZTsgfQogICAgIGJvb2wgdXNlc1dl
YlByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1dlYlByb2Nlc3NDYWNoZTsgfQog
CisgICAgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wgdmFsdWUpIHsgbV91c2VzUGFnZUNhY2hl
ID0gdmFsdWU7IH0KKyAgICBib29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXNQYWdlQ2FjaGU7IH0KKyAgICAKICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRv
bWF0aWNQcm9jZXNzUHJld2FybWluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5l
Zml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRX
b3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBt
X2NsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVl
OyB9CiAKICAgICBib29sIGRpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7IH0K
ICAgICB2b2lkIHNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KIAotICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZU1vZGVsOyB9Ci0gICAgdm9pZCBzZXRDYWNoZU1vZGVsKFdlYktpdDo6Q2FjaGVN
b2RlbCBjYWNoZU1vZGVsKSB7IG1fY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7IH0KLQogICAgIGNv
bnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KSB7IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3Rvcnk7IH0KIApAQCAtMTg2LDcgKzE4Niw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1fZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0g
ICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbDo6
UHJpbWFyeVdlYkJyb3dzZXIgfTsKIAogICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWU7CkBAIC0yMTgsNiArMjE3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9u
YWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OwogICAg
IGJvb2wgbV91c2VzV2ViUHJvY2Vzc0NhY2hlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdXNlc1Bh
Z2VDYWNoZSB7IHRydWUgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9t
YXRpY1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3Rv
bVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1fc2hvdWxkQ29u
ZmlndXJlSlNDRm9yVGVzdGluZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNp
bmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmgiCkBAIC0zMjAsMTIgKzMyMSwxMiBAQCB2b2lkIFdLQ29udGV4dENsZWFyVmlzaXRlZExpbmtz
KFdLQ29udGV4CiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVNb2Rl
bCkpOworICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRDYWNoZU1vZGVs
KFdlYktpdDo6dG9DYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIH0KIAogV0tDYWNoZU1vZGVsIFdL
Q29udGV4dEdldENhY2hlTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmNhY2hlTW9kZWwo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmds
ZXRvbigpLmNhY2hlTW9kZWwoKSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0TWF4aW11bU51bWJl
ck9mUHJvY2Vzc2VzKFdLQ29udGV4dFJlZiwgdW5zaWduZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI1MDAxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiTGVnYWN5R2xv
YmFsU2V0dGluZ3MuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0
aW9uIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbgpAQCAtMjg3LDE1ICsyODgsMTIgQEAgLSAo
Qk9PTClwcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbgogCiAtIChCT09MKXBhZ2VDYWNo
ZUVuYWJsZWQKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVN
b2RlbCgpICE9IFdlYktpdDo6Q2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7CisgICAgcmV0dXJu
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAogLSAodm9p
ZClzZXRQYWdlQ2FjaGVFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBpZiAoIWVuYWJsZWQp
Ci0gICAgICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlTW9kZWwoV2ViS2l0
OjpDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcik7Ci0gICAgZWxzZSBpZiAoIVtzZWxmIHBhZ2VD
YWNoZUVuYWJsZWRdKQotICAgICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRDYWNo
ZU1vZGVsKFdlYktpdDo6Q2FjaGVNb2RlbDo6UHJpbWFyeVdlYkJyb3dzZXIpOworICAgIHJldHVy
biBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRVc2VzUGFnZUNhY2hlKGVuYWJsZWQpOwog
fQogCiAtIChCT09MKXVzZXNTaW5nbGVXZWJQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNp
b24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgorI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tl
clN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKQEAgLTcxMSwxMiAr
NzEyLDEwIEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2EKICAqIHNw
ZWNpZnlpbmcgJVdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVIuIFRoZSBkZWZhdWx0
IHZhbHVlIGlzCiAgKiAlV0VCS0lUX0NBQ0hFX01PREVMX1dFQl9CUk9XU0VSLgogICovCi12b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfY2FjaGVfbW9kZWwoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0Q2FjaGVNb2RlbCBtb2RlbCkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9jYWNoZV9tb2RlbChXZWJLaXRXZWJDb250ZXh0KiwgV2ViS2l0Q2FjaGVNb2RlbCBtb2RlbCkK
IHsKICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWw7CiAKLSAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0KICAgICBzd2l0Y2ggKG1vZGVsKSB7CiAg
ICAgY2FzZSBXRUJLSVRfQ0FDSEVfTU9ERUxfRE9DVU1FTlRfVklFV0VSOgogICAgICAgICBjYWNo
ZU1vZGVsID0gQ2FjaGVNb2RlbDo6RG9jdW1lbnRWaWV3ZXI7CkBAIC03MzEsOCArNzMwLDggQEAg
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2NhY2hlX21vZGVsKAogICAgICAgICBnX2Fzc2Vy
dF9ub3RfcmVhY2hlZCgpOwogICAgIH0KIAotICAgIGlmIChjYWNoZU1vZGVsICE9IGNvbnRleHQt
PnByaXYtPnByb2Nlc3NQb29sLT5jYWNoZU1vZGVsKCkpCi0gICAgICAgIGNvbnRleHQtPnByaXYt
PnByb2Nlc3NQb29sLT5zZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpOworICAgIGlmIChjYWNoZU1v
ZGVsICE9IExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1vZGVsKCkpCisg
ICAgICAgIExlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRDYWNoZU1vZGVsKGNh
Y2hlTW9kZWwpOwogfQogCiAvKioKQEAgLTc0OSw3ICs3NDgsNyBAQCBXZWJLaXRDYWNoZU1vZGVs
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpLCBXRUJLSVRfQ0FDSEVfTU9ERUxfV0VCX0JST1dT
RVIpOwogCi0gICAgc3dpdGNoIChjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y2FjaGVNb2Rl
bCgpKSB7CisgICAgc3dpdGNoIChMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2Fj
aGVNb2RlbCgpKSB7CiAgICAgY2FzZSBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcjoKICAgICAg
ICAgcmV0dXJuIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVOVF9WSUVXRVI7CiAgICAgY2FzZSBD
YWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlcjoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAJKHJldmlzaW9uIDI1MDAx
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKKyNpbmNsdWRlICJMZWdhY3lHbG9iYWxTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIldlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAgICAgfQogI2VuZGlmCiAKLSAgICBwYXJh
bWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQgfHwgY2Fj
aGVNb2RlbCgpID09IENhY2hlTW9kZWw6OkRvY3VtZW50Vmlld2VyOworICAgIHBhcmFtZXRlcnMu
bWVtb3J5Q2FjaGVEaXNhYmxlZCA9IG1fbWVtb3J5Q2FjaGVEaXNhYmxlZCB8fCBMZWdhY3lHbG9i
YWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpID09IENhY2hlTW9kZWw6OkRvY3Vt
ZW50Vmlld2VyOwogICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5ncyA9IG1fbmV0d29ya1Byb3h5
U2V0dGluZ3M7CiAKICAgICBpZiAobWVtb3J5UHJlc3N1cmVNb25pdG9yRGlzYWJsZWQoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjUwMDE5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcyNSw2ICsxNzI1LDggQEAKIAkJCWNvbXBp
bGVyU3BlYyA9IGNvbS5hcHBsZS5jb21waWxlcnMucHJveHkuc2NyaXB0OwogCQkJZmlsZVBhdHRl
cm5zID0gIiouaCI7CiAJCQlmaWxlVHlwZSA9IHBhdHRlcm4ucHJveHk7CisJCQlpbnB1dEZpbGVz
ID0gKAorCQkJKTsKIAkJCWlzRWRpdGFibGUgPSAxOwogCQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJ
IiQoSEVBREVSX09VVFBVVF9ESVIpLyQoSU5QVVRfRklMRV9OQU1FKSIsCkBAIC0zNjk0LDYgKzM2
OTYsOCBAQAogCQk1Q0U5MTIwQjIyOTNDMUUwMDA1QkVDNzggLyogV0tNYWluLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0U5MTIwQzIyOTNDMUUwMDA1QkVDNzggLyogV0tNYWluLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vz
c01haW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXV4aWxpYXJ5
UHJvY2Vzc01haW4uY3BwOyBwYXRoID0gQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0VBQkEyQTIzMzMyNDc3MDA3OTc3OTcgLyog
TGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGVnYWN5R2xvYmFsU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNF
QUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNGRUNCMDMxRTFFRDFDODAwRjg4NTA0IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1REFENzNGMTExNkZGOTBDMDBFRTUzOTYgLyogQmFzZVRhcmdl
dC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFyZ2V0Lnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MTdBNTJENzFGNDNBOUI2MDBE
Q0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CkBAIC03NzU1LDYgKzc3NTksOCBAQAogCQkJCTgzOUEyRjMwMUUy
MDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oICov
LAogCQkJCUE1RTM5MUZCMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5j
cHAgKi8sCiAJCQkJQTVFMzkxRkMyMTgzQzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFBy
b3h5LmggKi8sCisJCQkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNl
dHRpbmdzLmNwcCAqLywKKwkJCQk1Q0VBQkEyQTIzMzMyNDc3MDA3OTc3OTcgLyogTGVnYWN5R2xv
YmFsU2V0dGluZ3MuaCAqLywKIAkJCQkzMTYwN0YzODE5NjI3MDAyMDA5Qjg3REEgLyogTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8q
IFBhZ2VDbGllbnQuaCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxv
YWRTdGF0ZS5jcHAgKi8sCg==
</data>
<flag name="review"
          id="394803"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>