<?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>164220</bug_id>
          
          <creation_ts>2016-10-31 03:49:38 -0700</creation_ts>
          <short_desc>NetworkSession: Network process crash when converting main resource to download</short_desc>
          <delta_ts>2016-11-18 11:42:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local 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>Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164631</dependson>
          <blocked>164458</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Carlos Garcia Campos">cgarcia</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246402</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-31 03:49:38 -0700</bug_when>
    <thetext>Right after the main resource load is converted to a download, the web process deletes the ResourceLoader which sends the RemoveLoadIdentifier to the network process and the load is aborted. Sometimes it happens that NetworkResourceLoader::abort() is called while the NetworkLoad is still deciding the destination of the download. In such case, NetworkResourceLoader::didConvertToDownload() has already been called, but not NetworkResourceLoader::didBecomeDownload(). In NetworkResourceLoader::abort() we already handle the case of having a NetworkLoad after NetworkResourceLoader::didConvertToDownload() has been called, to avoid canceling the load in such case, however cleanup() is always called unconditionally and the NetworkLoad is deleted before NetworkResourceLoader::didBecomeDownload() is called. When the NetworkLoad is destroyed the NetworkDataTask client becomes nullptr, leaving it in a state where both the client is nullptr and the download hasn&apos;t been created yet. That&apos;s not expected to happen and when the response completion handler is called in the NetworkDataTask it tries to use either the client or the download and it crashes. In the GTK+ port we have unit test for this use case, but the find destination happens so fasta that RemoveLoadIdentifier message is always received after etworkResourceLoader::didBecomeDownload() is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246403</commentid>
    <comment_count>1</comment_count>
      <attachid>293415</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-31 04:25:12 -0700</bug_when>
    <thetext>Created attachment 293415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246404</commentid>
    <comment_count>2</comment_count>
      <attachid>293415</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-31 04:30:23 -0700</bug_when>
    <thetext>Comment on attachment 293415
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp:545
&gt; +        if (test-&gt;m_shouldDelayDecideDestination)
&gt; +            g_usleep(0.2 * G_USEC_PER_SEC);

There&apos;s no way to know when the load has been aborted? :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246406</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-31 04:40:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 293415 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293415&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp:545
&gt; &gt; +        if (test-&gt;m_shouldDelayDecideDestination)
&gt; &gt; +            g_usleep(0.2 * G_USEC_PER_SEC);
&gt; 
&gt; There&apos;s no way to know when the load has been aborted? :/

No, because it&apos;s an internal abort, the load is converted to a download, which means that a Download is created to continue with the load, and the ResourceLoader is destroyed. So, the load is not actually aborted, it&apos;s the NetworkResourceLoader. The problem is that we were deleting the NetworkResourceLoader before the network load finished to become a download. From the API point of view there isn&apos;t any abort, after we decide the load is a download, we use the WebKitDownload object and forget about the loader client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246471</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-31 10:00:07 -0700</bug_when>
    <thetext>Committed r208154: &lt;http://trac.webkit.org/changeset/208154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246593</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-10-31 14:34:12 -0700</bug_when>
    <thetext>Reverted r208154 for reason:

This change caused an assertion failure during API tests on macOS.

Committed r208174: &lt;http://trac.webkit.org/changeset/208174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246595</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-10-31 14:34:54 -0700</bug_when>
    <thetext>*** Bug 164237 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246867</commentid>
    <comment_count>7</comment_count>
      <attachid>293544</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-01 03:20:03 -0700</bug_when>
    <thetext>Created attachment 293544
Patch

Updated patch to fix the assert. The abort is no longer cleaning up the resource loader when becoming a download.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247371</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-02 10:33:43 -0700</bug_when>
    <thetext>Alex, could you review this again please? this is causing network process to crash on every single download started by a web page in epiphany :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247403</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-02 11:27:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/208293</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248302</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-04 15:07:09 -0700</bug_when>
    <thetext>I rolled this out in http://trac.webkit.org/changeset/208400
It was causing assertions in API tests like https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/1113/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248305</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-04 15:11:07 -0700</bug_when>
    <thetext>When we make a NetworkResourceLoader become a download, it needs to not be owned by the NetworkConnectionToWebProcess any more if we want it to stay alive when a NetworkConnectionToWebProcess is destroyed.  We need a new container for the NetworkResourceLoaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248476</commentid>
    <comment_count>12</comment_count>
      <attachid>293992</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-05 04:42:45 -0700</bug_when>
    <thetext>Created attachment 293992
New patch

This is a new approach that ensures the NetworkResourceLoader is cleaned up and destroyed right after becoming a download, but the NetworkLoad keeps alive until the NetworkDataTask becomes a download, by using PendingDownload to adopt the NetworkLoad. I think this also makes the downloads life cycle easier to follow now, since we will always have a PendingDownload, and we no longer need didBecomeDownload() callbacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248835</commentid>
    <comment_count>13</comment_count>
      <attachid>293992</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-07 14:12:51 -0800</bug_when>
    <thetext>Comment on attachment 293992
New patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkLoad.h:134
&gt; -    NetworkLoadClient&amp; m_client;
&gt; +    NetworkLoadClient* m_client;

This should be a std::reference_wrapper, which is reassignable but never null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249650</commentid>
    <comment_count>14</comment_count>
      <attachid>294325</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-09 19:52:41 -0800</bug_when>
    <thetext>Created attachment 294325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249651</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-09 19:53:55 -0800</bug_when>
    <thetext>Committing this as I suspect this will fix the assertion being hit by the patch at Bug 164458.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249667</commentid>
    <comment_count>16</comment_count>
      <attachid>294325</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 20:52:14 -0800</bug_when>
    <thetext>Comment on attachment 294325
Patch

Clearing flags on attachment: 294325

Committed r208521: &lt;http://trac.webkit.org/changeset/208521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249668</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 20:52:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249711</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-10 00:29:46 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Committing this as I suspect this will fix the assertion being hit by the
&gt; patch at Bug 164458.

Perfect, thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249785</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-10 07:35:00 -0800</bug_when>
    <thetext>Why was this reopened?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249788</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-10 07:43:51 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Why was this reopened?

History says it was me, but I really don&apos;t know how I did it, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252748</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-18 11:42:50 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; Why was this reopened?
&gt; 
&gt; History says it was me, but I really don&apos;t know how I did it, sorry.

From C++11 standard:
&quot;&quot;&quot;
Additionally, u can, upon request, transfer ownership to another unique pointer u2. Upon completion of such a transfer, the following postconditions hold:
— u2.p is equal to the pre-transfer u.p,
— u.p is equal to nullptr, and
&quot;&quot;&quot;

So my understanding is that the unique_ptr member is guaranteed to be null after you WTFMove() it out to another unique_ptr.

There&apos;s got to be something else going on here. Maybe the method is called on a non-main-thread and we&apos;re accessing m_networkLoad from 2 threads?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293415</attachid>
            <date>2016-10-31 04:25:12 -0700</date>
            <delta_ts>2016-11-01 03:20:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-download-crash.diff</filename>
            <type>text/plain</type>
            <size>7627</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MDhkNmZiLi40YTY4OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTYtMTAtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uOiBOZXR3b3JrIHByb2Nlc3MgY3Jhc2ggd2hlbiBj
b252ZXJ0aW5nIG1haW4gcmVzb3VyY2UgdG8gZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0IGFmdGVyIHRoZSBtYWluIHJlc291cmNl
IGxvYWQgaXMgY29udmVydGVkIHRvIGEgZG93bmxvYWQsIHRoZSB3ZWIgcHJvY2VzcyBkZWxldGVz
IHRoZSBSZXNvdXJjZUxvYWRlciB3aGljaAorICAgICAgICBzZW5kcyB0aGUgUmVtb3ZlTG9hZElk
ZW50aWZpZXIgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyBhbmQgdGhlIGxvYWQgaXMgYWJvcnRlZC4g
U29tZXRpbWVzIGl0IGhhcHBlbnMgdGhhdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmFib3J0KCkgaXMgY2FsbGVkIHdoaWxlIHRoZSBOZXR3b3JrTG9hZCBpcyBzdGlsbCBkZWNpZGlu
ZyB0aGUgZGVzdGluYXRpb24gb2YgdGhlCisgICAgICAgIGRvd25sb2FkLiBJbiBzdWNoIGNhc2Us
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydFRvRG93bmxvYWQoKSBoYXMgYWxyZWFk
eSBiZWVuIGNhbGxlZCwgYnV0IG5vdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEJlY29tZURvd25sb2FkKCkuIEluIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKSB3ZSBh
bHJlYWR5IGhhbmRsZSB0aGUgY2FzZSBvZgorICAgICAgICBoYXZpbmcgYSBOZXR3b3JrTG9hZCBh
ZnRlciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZENvbnZlcnRUb0Rvd25sb2FkKCkgaGFzIGJl
ZW4gY2FsbGVkLCB0byBhdm9pZCBjYW5jZWxpbmcgdGhlCisgICAgICAgIGxvYWQgaW4gc3VjaCBj
YXNlLCBob3dldmVyIGNsZWFudXAoKSBpcyBhbHdheXMgY2FsbGVkIHVuY29uZGl0aW9uYWxseSBh
bmQgdGhlIE5ldHdvcmtMb2FkIGlzIGRlbGV0ZWQgYmVmb3JlCisgICAgICAgIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkQmVjb21lRG93bmxvYWQoKSBpcyBjYWxsZWQuIFdoZW4gdGhlIE5ldHdv
cmtMb2FkIGlzIGRlc3Ryb3llZCB0aGUgTmV0d29ya0RhdGFUYXNrCisgICAgICAgIGNsaWVudCBi
ZWNvbWVzIG51bGxwdHIsIGxlYXZpbmcgaXQgaW4gYSBzdGF0ZSB3aGVyZSBib3RoIHRoZSBjbGll
bnQgaXMgbnVsbHB0ciBhbmQgdGhlIGRvd25sb2FkIGhhc24ndCBiZWVuCisgICAgICAgIGNyZWF0
ZWQgeWV0LiBUaGF0J3Mgbm90IGV4cGVjdGVkIHRvIGhhcHBlbiBhbmQgd2hlbiB0aGUgcmVzcG9u
c2UgY29tcGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgTmV0d29ya0Rh
dGFUYXNrIGl0IHRyaWVzIHRvIHVzZSBlaXRoZXIgdGhlIGNsaWVudCBvciB0aGUgZG93bmxvYWQg
YW5kIGl0IGNyYXNoZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEJlY29tZURvd25sb2FkKTogQ2FsbCBjbGVhbnVwKCkgaW5zdGVhZCBvZiBqdXN0IGRlbGV0aW5n
IHRoZSBuZXR3b3JrIGxvYWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YWJvcnQpOiBJZiB3ZSBzdGlsbCBoYXZlIGEgbmV0d29yayBsb2FkIHRoYXQgd2FzIGNvbnZl
cnRlZCB0byBhIGRvd25sb2FkLCBkbyBub3QKKyAgICAgICAgY2FsbCBjbGVhbnVwKCkgYmVjYXVz
ZSBpdCB3aWxsIGJlIGNhbGxlZCBieSBkaWRCZWNvbWVEb3dubG9hZCgpIGxhdGVyLgorCiAyMDE2
LTEwLTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBQbHVnaW4gcHJvY2VzcyBjcmFzaGVzIGluIE5QTl9JbnZva2VEZWZhdWx0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA5NTIxODRmLi4wYTk0Y2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI4NCw3ICsy
ODQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQmVjb21lRG93bmxvYWQoKQog
ewogICAgIEFTU0VSVChtX2RpZENvbnZlcnRUb0Rvd25sb2FkKTsKICAgICBBU1NFUlQobV9uZXR3
b3JrTG9hZCk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CisgICAgY2xlYW51cCgpOwog
fQogI2VuZGlmCiAKQEAgLTMwNiw2ICszMDYsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmFib3J0KCkKICAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2FuY2VsKCk7CiAgICAgfQogCisj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICBpZiAobV9uZXR3b3JrTG9hZCAmJiBtX2RpZENv
bnZlcnRUb0Rvd25sb2FkKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGNsZWFudXAo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDUyZmZhZTkuLjU4MjY3OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0xMC0zMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgTmV0d29ya1Nlc3Npb246
IE5ldHdvcmsgcHJvY2VzcyBjcmFzaCB3aGVuIGNvbnZlcnRpbmcgbWFpbiByZXNvdXJjZSB0byBk
b3dubG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3BsaXQgL3dlYmtpdDIvRG93bmxvYWRzL3BvbGljeS1kZWNpc2lvbi1kb3dubG9hZCBpbiB0d28s
IG9uZSB0byB0ZXN0IHRoZSBmdWxsIGxvYWQgd2hlbiBtYWluIHJlc291cmNlIGlzCisgICAgICAg
IGNvbnZlcnRlZCB0byBhIGRvd25sb2FkIGFuZCBhbm90aGVyIG9uZSB0byB0ZXN0IHRoZSBjYW5j
ZWxsYXRpb24gYXMgdGhlIHRlc3Qgd2FzIGRvaW5nIGJlZm9yZS4gV2hlbiBkb2luZyB0aGUKKyAg
ICAgICAgZnVsbCBsb2FkLCBkZWxheSBhIGJpdCB0aGUgZGVjaWRlIGRlc3RpbmF0aW9uIHRvIGVu
c3VyZSB0aGUgbG9hZCBpcyBhYm9ydGVkIGJlZm9yZSB0aGUgZGF0YSB0YXNrIGhhcyBiZWNhbWUg
YQorICAgICAgICBkb3dubG9hZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcDoKKyAgICAgICAgKHRlc3RQb2xpY3lSZXNwb25zZURv
d25sb2FkKToKKyAgICAgICAgKHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKToKKyAg
ICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMTYtMTAtMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFBsdWdpbiBwcm9jZXNzIGNyYXNoZXMgaW4g
TlBOX0ludm9rZURlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcAppbmRleCBjMThmNjI5Li4yMGZkZTllIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fk
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3du
bG9hZHMuY3BwCkBAIC01MTUsNiArNTE1LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdGVz
dC0+bV9kb3dubG9hZCA9IGRvd25sb2FkOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkKSk7CisgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QoZG93bmxvYWQsICJkZWNpZGUtZGVzdGluYXRpb24iLCBHX0NBTExCQUNLKGRv
d25sb2FkRGVjaWRlRGVzdGluYXRpb25DYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KGRvd25sb2FkLCAiZmluaXNoZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkRmluaXNo
ZWRDYWxsYmFjayksIHRlc3QpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9
CiAKQEAgLTUzOSw2ICs1NDEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgp
LCBzdWdnZXN0ZWRGaWxlbmFtZSwgbnVsbHB0cikpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0aW9uLmdldCgpLCAwLCAw
KSk7CisgICAgICAgIGlmICh0ZXN0LT5tX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24pCisg
ICAgICAgICAgICBnX3VzbGVlcCgwLjIgKiBHX1VTRUNfUEVSX1NFQyk7CiAgICAgICAgIHdlYmtp
dF9kb3dubG9hZF9zZXRfZGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uVVJJLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQpAQCAtNTUwLDEyICs1NTQsMTEgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCkKICAgICB7Ci0gICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImRlY2lkZS1kZXN0aW5hdGlv
biIsIEdfQ0FMTEJBQ0soZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImZpbmlzaGVkIiwg
R19DQUxMQkFDSyhkb3dubG9hZEZpbmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0RG93
bmxvYWQ+IG1fZG93bmxvYWQ7CisgICAgYm9vbCBtX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRp
b24geyBmYWxzZSB9OwogfTsKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEb3dubG9hZFVSSShX
ZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtNjA0LDcgKzYwNywy
OCBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkKFBv
bGljeVJlc3BvbnNlRG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIC8v
IFRlc3QgdGhhdCBhIGRvd25sb2FkIHN0YXJ0ZWQgYnkgdGhlIHRoZSBwb2xpY3kgY2hlY2tlciBj
b250YWlucyB0aGUgd2ViIHZpZXcuCisgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpOworICAgIC8vIERlbGF5IHRoZSBEZWNp
ZGVEZXN0aW5hdGlvbiB0byBlbnN1cmUgdGhhdCB0aGUgbG9hZCBpcyBhYm9ydGVkIGJlZm9yZSB0
aGUgbmV0d29yayB0YXNrIGhhcyBiZWNhbWUgYSBkb3dubG9hZC4KKyAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMC4KKyAgICB0ZXN0LT5tX3No
b3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkkocmVx
dWVzdFVSSS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwor
CisgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3dubG9hZF9nZXRfcmVx
dWVzdCh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKTsKKyAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAg
ICBBU1NFUlRfQ01QX0NTVFJJTkcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCks
ID09LCByZXF1ZXN0VVJJKTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJr
aXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKKyAgICB0
ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCk7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBk
b3dubG9hZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHdlYmtpdF9kb3dubG9h
ZF9nZXRfZGVzdGluYXRpb24odGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpKTsKKyAgICBHUmVmUHRy
PEdGaWxlSW5mbz4gZG93bmxvYWRGaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5m
byhkb3dubG9hZEZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgc3Rh
dGljX2Nhc3Q8R0ZpbGVRdWVyeUluZm9GbGFncz4oMCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0X3NpemUoZG93bmxvYWRGaWxlSW5mby5n
ZXQoKSksID4sIDApOworICAgIGdfZmlsZV9kZWxldGUoZG93bmxvYWRGaWxlLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxv
YWRDYW5jZWwoUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CiAgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rl
c3QucGRmIikuZGF0YSgpOwogICAgIHRlc3QtPmxvYWRVUkkocmVxdWVzdFVSSS5kYXRhKCkpOwog
ICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwpAQCAtNjU3LDYgKzY4MSw3IEBA
IHZvaWQgYmVmb3JlQWxsKCkKICAgICBEb3dubG9hZEVycm9yVGVzdDo6YWRkKCJEb3dubG9hZHMi
LCAicmVtb3RlLWZpbGUtZXJyb3IiLCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IpOwogICAg
IFdlYlZpZXdEb3dubG9hZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkb3dubG9hZC11cmki
LCB0ZXN0V2ViVmlld0Rvd25sb2FkVVJJKTsKICAgICBQb2xpY3lSZXNwb25zZURvd25sb2FkVGVz
dDo6YWRkKCJEb3dubG9hZHMiLCAicG9saWN5LWRlY2lzaW9uLWRvd25sb2FkIiwgdGVzdFBvbGlj
eVJlc3BvbnNlRG93bmxvYWQpOworICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0OjphZGQo
IkRvd25sb2FkcyIsICJwb2xpY3ktZGVjaXNpb24tZG93bmxvYWQtY2FuY2VsIiwgdGVzdFBvbGlj
eVJlc3BvbnNlRG93bmxvYWRDYW5jZWwpOwogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9h
ZHMiLCAibWltZS10eXBlIiwgdGVzdERvd25sb2FkTUlNRVR5cGUpOwogfQogCg==
</data>
<flag name="review"
          id="316292"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293544</attachid>
            <date>2016-11-01 03:20:03 -0700</date>
            <delta_ts>2016-11-05 04:42:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-download-crash.diff</filename>
            <type>text/plain</type>
            <size>9778</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyODg3YjEzLi4zNDgzNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTYtMTEtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uOiBOZXR3b3JrIHByb2Nlc3MgY3Jhc2ggd2hlbiBj
b252ZXJ0aW5nIG1haW4gcmVzb3VyY2UgdG8gZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0IGFmdGVyIHRoZSBtYWluIHJlc291cmNl
IGxvYWQgaXMgY29udmVydGVkIHRvIGEgZG93bmxvYWQsIHRoZSB3ZWIgcHJvY2VzcyBkZWxldGVz
IHRoZSBSZXNvdXJjZUxvYWRlciB3aGljaAorICAgICAgICBzZW5kcyB0aGUgUmVtb3ZlTG9hZElk
ZW50aWZpZXIgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyBhbmQgdGhlIGxvYWQgaXMgYWJvcnRlZC4g
U29tZXRpbWVzIGl0IGhhcHBlbnMgdGhhdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmFib3J0KCkgaXMgY2FsbGVkIHdoaWxlIHRoZSBOZXR3b3JrTG9hZCBpcyBzdGlsbCBkZWNpZGlu
ZyB0aGUgZGVzdGluYXRpb24gb2YgdGhlCisgICAgICAgIGRvd25sb2FkLiBJbiBzdWNoIGNhc2Us
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydFRvRG93bmxvYWQoKSBoYXMgYWxyZWFk
eSBiZWVuIGNhbGxlZCwgYnV0IG5vdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEJlY29tZURvd25sb2FkKCkuIEluIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKSB3ZSBh
bHJlYWR5IGhhbmRsZSB0aGUgY2FzZSBvZgorICAgICAgICBoYXZpbmcgYSBOZXR3b3JrTG9hZCBh
ZnRlciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZENvbnZlcnRUb0Rvd25sb2FkKCkgaGFzIGJl
ZW4gY2FsbGVkLCB0byBhdm9pZCBjYW5jZWxpbmcgdGhlCisgICAgICAgIGxvYWQgaW4gc3VjaCBj
YXNlLCBob3dldmVyIGNsZWFudXAoKSBpcyBhbHdheXMgY2FsbGVkIHVuY29uZGl0aW9uYWxseSBh
bmQgdGhlIE5ldHdvcmtMb2FkIGlzIGRlbGV0ZWQgYmVmb3JlCisgICAgICAgIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkQmVjb21lRG93bmxvYWQoKSBpcyBjYWxsZWQuIFdoZW4gdGhlIE5ldHdv
cmtMb2FkIGlzIGRlc3Ryb3llZCB0aGUgTmV0d29ya0RhdGFUYXNrCisgICAgICAgIGNsaWVudCBi
ZWNvbWVzIG51bGxwdHIsIGxlYXZpbmcgaXQgaW4gYSBzdGF0ZSB3aGVyZSBib3RoIHRoZSBjbGll
bnQgaXMgbnVsbHB0ciBhbmQgdGhlIGRvd25sb2FkIGhhc24ndCBiZWVuCisgICAgICAgIGNyZWF0
ZWQgeWV0LiBUaGF0J3Mgbm90IGV4cGVjdGVkIHRvIGhhcHBlbiBhbmQgd2hlbiB0aGUgcmVzcG9u
c2UgY29tcGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgTmV0d29ya0Rh
dGFUYXNrIGl0IHRyaWVzIHRvIHVzZSBlaXRoZXIgdGhlIGNsaWVudCBvciB0aGUgZG93bmxvYWQg
YW5kIGl0IGNyYXNoZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZW1vdmVMb2FkSWRlbnRpZmllcik6IFVwZGF0ZSBBU1NFUlQsIGJlY2F1
c2UgYWJvcnQgZG9lc24ndCBjbGVhbnVwIHRoZQorICAgICAgICByZXNvdXJjZSBsb2FkZXIgaW4g
Y2FzZSBpdCdzIGJlY29taW5nIGEgZG93bmxvYWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRCZWNvbWVEb3dubG9hZCk6IENhbGwgY2xlYW51cCgpIGluc3RlYWQgb2Yg
anVzdCBkZWxldGluZyB0aGUgbmV0d29yayBsb2FkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmlzQmVjb21pbmdEb3dubG9hZCk6IEhlbHBlciBtZXRob2QgdG8gY2hl
Y2sgaWYgdGhlIHJlc291cmNlIGxvYWQgd2FzIGNvbnZlcnRlZCB0byBhCisgICAgICAgIGRvd25s
b2FkLCBidXQgZGlkQmVjb21lRG93bmxvYWQoKSBoYXNuJ3QgYmVlbiBjYWxsZWQgeWV0LgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KTogSWYgdGhlIHJlc291
cmNlIGxvYWQgaXMgYmVjb21pbmcgYSBkb3dubG9hZCBkbyBub3QgY2FsbCBjbGVhbnVwKCkKKyAg
ICAgICAgYmVjYXVzZSBpdCB3aWxsIGJlIGNhbGxlZCBieSBkaWRCZWNvbWVEb3dubG9hZCgpIGxh
dGVyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
CiAyMDE2LTEwLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOZXR3b3JrU2Vzc2lvbjogQWRkIE5ldHdvcmtEYXRhVGFzayBpbXBsZW1lbnRh
dGlvbiBmb3IgYmxvYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAwZTYzYzNm
Li40MjE4M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xNTgsNyArMTU4
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlTG9hZElkZW50
aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcgogICAgIC8vIEFib3J0IHRoZSBsb2FkIG5vdywg
YXMgdGhlIFdlYlByb2Nlc3Mgd29uJ3QgYmUgYWJsZSB0byByZXNwb25kIHRvIG1lc3NhZ2VzIGFu
eSBtb3JlIHdoaWNoIG1pZ2h0IGxlYWQKICAgICAvLyB0byBsZWFrZWQgbG9hZGVyIHJlc291cmNl
cyAoY29ubmVjdGlvbnMsIHRocmVhZHMsIGV0YykuCiAgICAgbG9hZGVyLT5hYm9ydCgpOwotICAg
IEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KyAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlmaWVy
KSB8fCBsb2FkZXItPmlzQmVjb21pbmdEb3dubG9hZCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGJvb2wgZGVmZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTUyMTg0Zi4u
OWJhMTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yODQsMTAgKzI4NCwxOSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkQmVjb21lRG93bmxvYWQoKQogewogICAgIEFTU0VSVChtX2Rp
ZENvbnZlcnRUb0Rvd25sb2FkKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7Ci0gICAgbV9u
ZXR3b3JrTG9hZCA9IG51bGxwdHI7CisgICAgY2xlYW51cCgpOwogfQogI2VuZGlmCiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0JlY29taW5nRG93bmxvYWQoKSBjb25zdAoreworI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgcmV0dXJuIG1fbmV0d29ya0xvYWQgJiYgbV9kaWRD
b252ZXJ0VG9Eb3dubG9hZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKQEAgLTMwNiw2ICszMTUsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YWJvcnQoKQogICAgICAgICBtX25ldHdvcmtMb2FkLT5jYW5jZWwoKTsKICAgICB9CiAK
KyAgICBpZiAoaXNCZWNvbWluZ0Rvd25sb2FkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGNs
ZWFudXAoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCA2OWM2YWM1Li44ZWIzODgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAg
ICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQ7IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlEOyB9CisgICAgYm9vbCBpc0JlY29taW5nRG93bmxvYWQoKSBjb25zdDsKIAogICAg
IHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTgwN2RhZi4uNDM1OTNiMCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE2LTExLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBOZXR3b3JrU2Vzc2lvbjogTmV0d29yayBwcm9jZXNzIGNyYXNoIHdoZW4gY29udmVy
dGluZyBtYWluIHJlc291cmNlIHRvIGRvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCAvd2Via2l0Mi9Eb3dubG9hZHMvcG9saWN5LWRl
Y2lzaW9uLWRvd25sb2FkIGluIHR3bywgb25lIHRvIHRlc3QgdGhlIGZ1bGwgbG9hZCB3aGVuIG1h
aW4gcmVzb3VyY2UgaXMKKyAgICAgICAgY29udmVydGVkIHRvIGEgZG93bmxvYWQgYW5kIGFub3Ro
ZXIgb25lIHRvIHRlc3QgdGhlIGNhbmNlbGxhdGlvbiBhcyB0aGUgdGVzdCB3YXMgZG9pbmcgYmVm
b3JlLiBXaGVuIGRvaW5nIHRoZQorICAgICAgICBmdWxsIGxvYWQsIGRlbGF5IGEgYml0IHRoZSBk
ZWNpZGUgZGVzdGluYXRpb24gdG8gZW5zdXJlIHRoZSBsb2FkIGlzIGFib3J0ZWQgYmVmb3JlIHRo
ZSBkYXRhIHRhc2sgaGFzIGJlY2FtZSBhCisgICAgICAgIGRvd25sb2FkLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwOgorICAgICAg
ICAodGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWQpOgorICAgICAgICAodGVzdFBvbGljeVJlc3Bv
bnNlRG93bmxvYWRDYW5jZWwpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxNi0xMC0zMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFz
aWMgdmlzdWFsL2xheW91dCB2aWV3cG9ydCBzdXBwb3J0IGZvciBmaXhlZCBwb3NpdGlvbiBsYXlv
dXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
RG93bmxvYWRzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
RG93bmxvYWRzLmNwcAppbmRleCBjMThmNjI5Li4yMGZkZTllIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwCkBAIC01
MTUsNiArNTE1LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdGVzdC0+bV9kb3dubG9hZCA9
IGRvd25sb2FkOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkKSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZG93
bmxvYWQsICJkZWNpZGUtZGVzdGluYXRpb24iLCBHX0NBTExCQUNLKGRvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25DYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KGRvd25s
b2FkLCAiZmluaXNoZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkRmluaXNoZWRDYWxsYmFjayksIHRl
c3QpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CiAKQEAgLTUzOSw2ICs1
NDEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RpbmF0
aW9uKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCBzdWdnZXN0ZWRGaWxl
bmFtZSwgbnVsbHB0cikpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RpbmF0aW9uVVJJ
KGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0aW9uLmdldCgpLCAwLCAwKSk7CisgICAgICAgIGlm
ICh0ZXN0LT5tX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24pCisgICAgICAgICAgICBnX3Vz
bGVlcCgwLjIgKiBHX1VTRUNfUEVSX1NFQyk7CiAgICAgICAgIHdlYmtpdF9kb3dubG9hZF9zZXRf
ZGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uVVJJLmdldCgpKTsKICAgICAgICAgcmV0
dXJuIFRSVUU7CiAgICAgfQpAQCAtNTUwLDEyICs1NTQsMTEgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB3YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCkKICAgICB7Ci0gICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImRlY2lkZS1kZXN0aW5hdGlvbiIsIEdfQ0FMTEJBQ0so
ZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImZpbmlzaGVkIiwgR19DQUxMQkFDSyhkb3du
bG9hZEZpbmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1f
bWFpbkxvb3ApOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IG1fZG93bmxv
YWQ7CisgICAgYm9vbCBtX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24geyBmYWxzZSB9Owog
fTsKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEb3dubG9hZFVSSShXZWJWaWV3RG93bmxvYWRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtNjA0LDcgKzYwNywyOCBAQCBwdWJsaWM6CiAK
IHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkKFBvbGljeVJlc3BvbnNlRG93
bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIC8vIFRlc3QgdGhhdCBhIGRv
d25sb2FkIHN0YXJ0ZWQgYnkgdGhlIHRoZSBwb2xpY3kgY2hlY2tlciBjb250YWlucyB0aGUgd2Vi
IHZpZXcuCisgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L3Rlc3QucGRmIikuZGF0YSgpOworICAgIC8vIERlbGF5IHRoZSBEZWNpZGVEZXN0aW5hdGlvbiB0
byBlbnN1cmUgdGhhdCB0aGUgbG9hZCBpcyBhYm9ydGVkIGJlZm9yZSB0aGUgbmV0d29yayB0YXNr
IGhhcyBiZWNhbWUgYSBkb3dubG9hZC4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMC4KKyAgICB0ZXN0LT5tX3Nob3VsZERlbGF5RGVjaWRl
RGVzdGluYXRpb24gPSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkkocmVxdWVzdFVSSS5kYXRhKCkp
OworICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOworCisgICAgV2ViS2l0VVJJ
UmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3dubG9hZF9nZXRfcmVxdWVzdCh0ZXN0LT5tX2Rv
d25sb2FkLmdldCgpKTsKKyAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICBBU1NFUlRfQ01QX0NT
VFJJTkcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCByZXF1ZXN0VVJJ
KTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0
X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxE
b3dubG9hZEZpbmlzaGVkKCk7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBkb3dubG9hZEZpbGUgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRp
b24odGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpKTsKKyAgICBHUmVmUHRyPEdGaWxlSW5mbz4gZG93
bmxvYWRGaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhkb3dubG9hZEZpbGUu
Z2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgc3RhdGljX2Nhc3Q8R0ZpbGVR
dWVyeUluZm9GbGFncz4oMCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoZ19maWxlX2luZm9fZ2V0X3NpemUoZG93bmxvYWRGaWxlSW5mby5nZXQoKSksID4sIDApOwor
ICAgIGdfZmlsZV9kZWxldGUoZG93bmxvYWRGaWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsK
K30KKworc3RhdGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWRDYW5jZWwoUG9saWN5
UmVzcG9uc2VEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CiAgICAgQ1N0cmlu
ZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgp
OwogICAgIHRlc3QtPmxvYWRVUkkocmVxdWVzdFVSSS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRV
bnRpbERvd25sb2FkU3RhcnRlZCgpOwpAQCAtNjU3LDYgKzY4MSw3IEBAIHZvaWQgYmVmb3JlQWxs
KCkKICAgICBEb3dubG9hZEVycm9yVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAicmVtb3RlLWZpbGUt
ZXJyb3IiLCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IpOwogICAgIFdlYlZpZXdEb3dubG9h
ZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkb3dubG9hZC11cmkiLCB0ZXN0V2ViVmlld0Rv
d25sb2FkVVJJKTsKICAgICBQb2xpY3lSZXNwb25zZURvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9h
ZHMiLCAicG9saWN5LWRlY2lzaW9uLWRvd25sb2FkIiwgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxv
YWQpOworICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJw
b2xpY3ktZGVjaXNpb24tZG93bmxvYWQtY2FuY2VsIiwgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxv
YWRDYW5jZWwpOwogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAibWltZS10eXBl
IiwgdGVzdERvd25sb2FkTUlNRVR5cGUpOwogfQogCg==
</data>
<flag name="review"
          id="316405"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293992</attachid>
            <date>2016-11-05 04:42:45 -0700</date>
            <delta_ts>2016-11-09 19:52:32 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-download-crashes.diff</filename>
            <type>text/plain</type>
            <size>38638</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0NjJkOTc4Li41MjllODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTEg
QEAKIDIwMTYtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIE5ldHdvcmtTZXNzaW9uOiBOZXR3b3JrIHByb2Nlc3MgY3Jhc2ggd2hlbiBj
b252ZXJ0aW5nIG1haW4gcmVzb3VyY2UgdG8gZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJpZ2h0IGFmdGVyIHRoZSBtYWluIHJlc291cmNl
IGxvYWQgaXMgY29udmVydGVkIHRvIGEgZG93bmxvYWQsIHRoZSB3ZWIgcHJvY2VzcyBkZWxldGVz
IHRoZSBSZXNvdXJjZUxvYWRlciB3aGljaAorICAgICAgICBzZW5kcyB0aGUgUmVtb3ZlTG9hZElk
ZW50aWZpZXIgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyBhbmQgdGhlIGxvYWQgaXMgYWJvcnRlZC4g
U29tZXRpbWVzIGl0IGhhcHBlbnMgdGhhdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmFib3J0KCkgaXMgY2FsbGVkIHdoaWxlIHRoZSBOZXR3b3JrTG9hZCBpcyBzdGlsbCBkZWNpZGlu
ZyB0aGUgZGVzdGluYXRpb24gb2YgdGhlCisgICAgICAgIGRvd25sb2FkLiBJbiBzdWNoIGNhc2Us
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydFRvRG93bmxvYWQoKSBoYXMgYWxyZWFk
eSBiZWVuIGNhbGxlZCwgYnV0IG5vdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEJlY29tZURvd25sb2FkKCkuIEluIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKSB3ZSBh
bHJlYWR5IGhhbmRsZSB0aGUgY2FzZSBvZgorICAgICAgICBoYXZpbmcgYSBOZXR3b3JrTG9hZCBh
ZnRlciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZENvbnZlcnRUb0Rvd25sb2FkKCkgaGFzIGJl
ZW4gY2FsbGVkLCB0byBhdm9pZCBjYW5jZWxpbmcgdGhlCisgICAgICAgIGxvYWQgaW4gc3VjaCBj
YXNlLCBob3dldmVyIGNsZWFudXAoKSBpcyBhbHdheXMgY2FsbGVkIHVuY29uZGl0aW9uYWxseSBh
bmQgdGhlIE5ldHdvcmtMb2FkIGlzIGRlbGV0ZWQgYmVmb3JlCisgICAgICAgIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkQmVjb21lRG93bmxvYWQoKSBpcyBjYWxsZWQuIFdoZW4gdGhlIE5ldHdv
cmtMb2FkIGlzIGRlc3Ryb3llZCB0aGUgTmV0d29ya0RhdGFUYXNrCisgICAgICAgIGNsaWVudCBi
ZWNvbWVzIG51bGxwdHIsIGxlYXZpbmcgaXQgaW4gYSBzdGF0ZSB3aGVyZSBib3RoIHRoZSBjbGll
bnQgaXMgbnVsbHB0ciBhbmQgdGhlIGRvd25sb2FkIGhhc24ndCBiZWVuCisgICAgICAgIGNyZWF0
ZWQgeWV0LiBUaGF0J3Mgbm90IGV4cGVjdGVkIHRvIGhhcHBlbiBhbmQgd2hlbiB0aGUgcmVzcG9u
c2UgY29tcGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgTmV0d29ya0Rh
dGFUYXNrIGl0IHRyaWVzIHRvIHVzZSBlaXRoZXIgdGhlIGNsaWVudCBvciB0aGUgZG93bmxvYWQg
YW5kIGl0IGNyYXNoZXMuCisgICAgICAgIFdlIG5lZWQgdG8gY2xlYW51cCBhbmQgZGVzdHJveSB0
aGUgUmVzb3VyY2VMb2FkZXIgYXMgc29vbiBhcyBpdCBiZWNvbWVzIGEgZG93bmxvYWQsIGJlY2F1
c2UgdGhhdCdzIHRoZSBleHBlY3RlZAorICAgICAgICBiZWhhdmlvciwgYnV0IGF0IHRoZSBzYW1l
IHRpbWUgd2UgbmVlZCB0byBrZWVwIHRoZSBOZXR3b3JrTG9hZCBhbGl2ZSB1bnRpbCB0aGUgTmV0
d29ya0RhdGFUYXNrIGZpbmlzaGVzIHRvIGJlY29tZQorICAgICAgICBhIGRvd25sb2FkLiBUaGlz
IHBhdGNoIGNyZWF0ZXMgYSBQZW5kaW5nRG93bmxvYWQgdG8gdGFrZSB0aGUgb3duZXJzaGlwIG9m
IHRoZSBOZXR3b3JrTG9hZCwgc28gdGhhdAorICAgICAgICBSZXNvdXJjZUxvYWRlciBjYW4gYmUg
Y2xlYW5lZCB1cCBhbmQgZGVzdHJveWVkLiBUaGUgRG93bmxvYWRNYW5hZ2VyIG5vdyB3aWxsIGhh
bmRsZSB0aGUgUGVuZGluZ0Rvd25sb2FkIGFzIGlmIGl0CisgICAgICAgIHdhcyBjcmVhdGVkIGJ5
IHN0YXJ0RG93bmxvYWQoKSwgYnV0IGVuc3VyaW5nIGl0J3MgZGVsZXRlZCByaWdodCBiZWZvcmUg
dGhlIGZpbmFsIERvd25sb2FkIG9iamVjdCBpcyBhZGRlZCB0byB0aGUKKyAgICAgICAgZG93bmxv
YWRzIG1hcC4gVGhhdCB3YXkgTmV0d29ya0RhdGFUYXNrIHdpbGwgYWx3YXlzIGhhdmUgYSB2YWxp
ZCBjbGllbnQgdW50aWwgdGhlIGZpbmFsIERvd25sb2FkIGlzIGNyZWF0ZWQsCisgICAgICAgIGZp
cnN0IHRoZSBSZXNvdXJjZUxvYWRlciBhbmQgdGhlbiB0aGUgUGVuZGluZ0Rvd25sb2FkLiBTaW5j
ZSB0aGUgRG93bmxvYWRNYW5hZ2VyIGlzIHRoZSBvd25lciBvZiB0aGUKKyAgICAgICAgUGVuZGlu
Z0Rvd25sb2FkIHdlIG5vIGxvbmdlciBuZWVkIHRoZSBkaWRCZWNvbWVEb3dubG9hZCgpIGNhbGxi
YWNrIHRvIGRlbGV0ZSB0aGUgTmV0d29ya0xvYWQsIGJlY2F1c2UgdGhlCisgICAgICAgIE5ldHdv
cmtMb2FkIHdpbGwgYWx3YXlzIGJlIG93bmVkIGJ5IHRoZSBQZW5kaW5nRG93bmxvYWQgbm93IHRo
YXQgd2lsbCBiZSBkZWxldGVkIGJ5IHRoZSBEb3dubG9hZE1hbmFnZXIuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayk6IENoYW5n
ZSB0aGUgQVNTRVJUIGJlY2F1c2UgYXQgdGhpcyBwb2ludCB3ZSBzaG91bGQgYWx3YXlzCisgICAg
ICAgIGhhdmUgYSBQZW5kaW5nRG93bmxvYWQsIGFuZCB0aGVuIHJlbW92ZSBpdCBmcm9tIHRoZSBt
YXAgaGVyZSBiZWZvcmUgYWRkaW5nIHRoZSBmaW5hbCBEb3dubG9hZCB0byB0aGUgbWFwLgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxv
YWQpOiBUaGlzIHJlcGxhY2VzIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkLCBidXQgaXQgYWxzbyBu
b3cKKyAgICAgICAgdXNlZCBmb3IgdGhlIE5ldHdvcmtTZXNzaW9uLiBJdCBjcmVhdGVzIGEgUGVu
ZGluZ0Rvd25sb2FkIGZvciB0aGUgZ2l2ZW4gTmV0d29ya0xvYWQuCisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bik6IERvIG5vdCB0YWtlIHRoZSBQZW5kaW5nRG93bmxvYWQgZnJvbSB0aGUKKyAgICAgICAgbWFw
IGhlcmUsIGp1c3QgY2hlY2sgaXQncyBwcmVzZW50LCBiZWNhdXNlIGl0IHdpbGwgYmUgcmVtb3Zl
ZCBmcm9tIGRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKCkuCisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQpOiBBZGQgYSBjb25zdHJ1
Y3RvciB0aGF0IHJlY2VpdmVzIGEgTmV0d29ya0xvYWQuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZCk6IEp1c3QgYXNrIHRoZSBSZXNvdXJjZUxvYWRlciB0byBiZQorICAgICAgICBjb252ZXJ0
ZWQgdG8gYSBkb3dubG9hZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQpOiBEbyBub3Qg
Y2FsbCBkaWRCZWNvbWVEb3dubG9hZCgpIGFuZCBhZGQgYW4gYXNzZXJ0IHRvIGVuc3VyZSB0aGUg
Y2xpZW50CisgICAgICAgIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCByaWdodCBhZnRlciB0aGUg
ZmluYWwgRG93bmxvYWQgb2JqZWN0IGlzIGNyZWF0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6TmV0d29y
a0xvYWQpOiBVc2UgYSBwb2ludGVyIGZvciB0aGUgY2xpZW50IGluc3RlYWQgb2YgYSByZWZlcmVu
Y2UgYmVjYXVzZSBub3cgd2UgbmVlZCB0bworICAgICAgICBjaGFuZ2UgdGhlIGNsaWVudCB3aGVu
IHRoZSBsb2FkIGlzIGNvbnZlcnRlZCB0byBhIGRvd25sb2FkLiBXZSBkb24ndCBuZWVkIHRvIG51
bGwgY2hlY2sgdGhlIGNsaWVudCBpbiBhbnkgY2FzZQorICAgICAgICBiZWNhdXNlIHRoZSBtZW1i
ZXIgaXMgb25seSB1cGRhdGVkIGludGVybmFsbHkgYW5kIGFsd2F5cyBmcm9tIGEgcGFzc2VkIHJl
ZmVyZW5jZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNvbnZlcnRU
YXNrVG9Eb3dubG9hZCk6IFRoaXMgbm93IHJlY2VpdmVzIGEgUGVuZGluZ0Rvd25sb2FkLiBJdCB1
cGRhdGVzIHRoZSBjbGllbnQgYW5kIG5vCisgICAgICAgIGxvbmdlciBzZW5kcyBEaWRTdGFydCwg
YmVjYXVzZSB0aGUgUGVuZGluZ0Rvd25sb2FkIHNlbmRzIGl0IG5vdy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2FzQmxvY2tlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjpkaWRCZWNvbWVEb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oOiBSZW1vdmUgZGlkQmVjb21lRG93bmxvYWQoKS4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2FkKTogVGhpcyByZXBsYWNlcyBk
aWRCZWNvbWVEb3dubG9hZCgpIGFuZAorICAgICAgICBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpLiBJ
dCB0cmFuc2ZlcnMgdGhlIE5ldHdvcmtMb2FkIHRvIHRoZSBEb3dubG9hZE1hbmFnZXIuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQpOiBXZSBkb24ndCBuZWVk
IHRvIGNoZWNrIGlmIHRoZSBsb2FkIHdhcyBjb252ZXJ0ZWQgdG8gYSBkb3dubG9hZCBoZXJlLAor
ICAgICAgICBiZWNhdXNlIG1fbmV0d29ya0xvYWQgd2lsbCBhbHdheXMgYmUgbnVsbCBoZXJlIGlu
IHN1Y2ggY2FzZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRC
ZWNvbWVEb3dubG9hZCk6IERlbGV0ZWQKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRDb252ZXJ0VG9Eb3dubG9hZCk6IERlbGV0ZWQKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oOiBSZW1vdmUgZGlkQmVjb21lRG93bmxvYWQoKS4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDogRGl0dG8uCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDogRGl0
dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW06IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKTogRG8gbm90IGNhbGwgZGlkQmVjb21l
RG93bmxvYWQoKS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9h
ZCk6IERvIG5vdCBjYWxsIGRpZEJlY29tZURvd25sb2FkKCkgYW5kIGFkZCBhbiBhc3NlcnQgdG8g
ZW5zdXJlIHRoZSBjbGllbnQKKyAgICAgICAgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIHJpZ2h0
IGFmdGVyIHRoZSBmaW5hbCBEb3dubG9hZCBvYmplY3QgaXMgY3JlYXRlZC4KKworMjAxNi0xMS0w
NSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAg
W1NPVVBdIExheW91dCB0ZXN0IGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVj
dC0zL2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3Qtc2FtZS1vcmlnaW4td2l0aC1sb2Nh
dGlvbi1jcmVkZW50aWFscy5odG1sIGZhaWxzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkzNTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBi
NDA2ZGU3Li44YTJkMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNjcsNyArNjcsOCBA
QCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQg
RG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRv
d25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKIHsKLSAgICBB
U1NFUlQoIW1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CisgICAgQVNT
RVJUKG1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CisgICAgbV9wZW5k
aW5nRG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRz
LmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25E
ZWNpZGVkLnJlbW92ZShkb3dubG9hZElEKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJ
RCwgV1RGTW92ZShkb3dubG9hZCkpOwpAQCAtOTcsMjggKzk4LDM3IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFU
YXNrJiBuZXR3CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Rvd25sb2Fkc1dhaXRpbmdGb3JEZXN0
aW5hdGlvbi5zZXQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3BhaXI8UmVmUHRyPE5ldHdvcmtEYXRh
VGFzaz4sIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXI+KCZuZXR3b3JrRGF0YVRhc2ssIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KLSNlbHNlCi12b2lkIERvd25sb2FkTWFuYWdlcjo6Y29u
dmVydEhhbmRsZVRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCisKK3Zv
aWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtMb2Fk
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogeworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgQVNTRVJUKCFtX3Bl
bmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOworICAgIG1fcGVuZGluZ0Rvd25s
b2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KFdU
Rk1vdmUobmV0d29ya0xvYWQpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOworI2Vs
c2UKICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMs
IGRvd25sb2FkSUQsIHJlcXVlc3QpOwogCisgICAgYXV0byogaGFuZGxlID0gbmV0d29ya0xvYWQt
PmhhbmRsZSgpOworICAgIEFTU0VSVChoYW5kbGUpOwogICAgIGRvd25sb2FkLT5zdGFydFdpdGhI
YW5kbGUoaGFuZGxlLCByZXNwb25zZSk7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlu
cyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUo
ZG93bmxvYWQpKTsKKworICAgIC8vIFVuYmxvY2sgdGhlIFVSTCBjb25uZWN0aW9uIG9wZXJhdGlv
biBxdWV1ZS4KKyAgICBoYW5kbGUtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CisjZW5k
aWYKIH0KLSNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElE
IGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQogewog
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKG1fZG93bmxvYWRzV2FpdGluZ0ZvckRl
c3RpbmF0aW9uLmNvbnRhaW5zKGRvd25sb2FkSUQpKSB7Ci0gICAgICAgIGF1dG8gcGVuZGluZ0Rv
d25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLnRha2UoZG93bmxvYWRJRCk7CiAgICAgICAgIGF1
dG8gcGFpciA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0aW9uLnRha2UoZG93bmxvYWRJ
RCk7CiAgICAgICAgIGF1dG8gbmV0d29ya0RhdGFUYXNrID0gV1RGTW92ZShwYWlyLmZpcnN0KTsK
ICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocGFpci5zZWNvbmQpOwog
ICAgICAgICBBU1NFUlQobmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgQVNTRVJUKGNvbXBsZXRp
b25IYW5kbGVyKTsKLSAgICAgICAgQVNTRVJUKCFwZW5kaW5nRG93bmxvYWQgfHwgcGVuZGluZ0Rv
d25sb2FkLmdldCgpID09IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkKCkpOworICAg
ICAgICBBU1NFUlQobV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKIAog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGRlc3Rp
bmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeURvd25sb2FkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRl
eCA5MDYzZjg0Li43ODU4NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC01MSw2ICs1MSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7CiBjbGFz
cyBEb3dubG9hZDsKK2NsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwog
CiBjbGFzcyBEb3dubG9hZE1hbmFnZXIgewpAQCAtODAsOSArODEsOCBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHdpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWRE
ZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
OwotI2Vsc2UKLSAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKERvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlmCisgICAgdm9pZCBjb252
ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrTG9hZD4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwogCiAgICAgdm9p
ZCByZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKaW5kZXggZDE2
YzkzMC4uODc2Nzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKQEAgLTQ4LDYgKzQ4LDE1IEBA
IFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIERvd25sb2FkSUQKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5
OjpEaWRTdGFydChtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBzdWdnZXN0ZWROYW1l
KSk7CiB9CiAKK1BlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorICAgIDogbV9uZXR3b3JrTG9hZChXVEZNb3ZlKG5ldHdvcmtMb2FkKSkKK3sKKyAgICBt
X25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93bmxvYWRJRChkb3dubG9hZElEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRTdGFydChyZXF1ZXN0LCBTdHJpbmcoKSkpOwor
CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udmVydFRhc2tUb0Rvd25sb2FkKCp0aGlzLCByZXF1ZXN0
LCByZXNwb25zZSk7Cit9CisKIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjp3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKQogewogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OldpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNw
b25zZSkpKTsKQEAgLTc3LDExICs4Niw2IEBAIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoCiB9CiAj
ZW5kaWYKIAotdm9pZCBQZW5kaW5nRG93bmxvYWQ6OmRpZEJlY29tZURvd25sb2FkKCkKLXsKLSAg
ICBtX25ldHdvcmtMb2FkID0gbnVsbHB0cjsKLX0KLSAgICAKIHZvaWQgUGVuZGluZ0Rvd25sb2Fk
OjpkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRGYWlsKGVycm9yLCB7IH0pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5k
aW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaAppbmRleCAyYjI1NmRiLi4yMDhkNzNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFBlbmRpbmdEb3dubG9hZCA6IHB1YmxpYyBOZXR3
b3JrTG9hZENsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGVuZGluZ0Rvd25sb2FkKE5ldHdvcmtMb2Fk
UGFyYW1ldGVycyYmLCBEb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkTmFtZSk7CisgICAgUGVuZGluZ0Rvd25sb2FkKHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrTG9hZD4mJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBjb250aW51ZVdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAjaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKQEAgLTY1LDggKzY2LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgb3ZlcnJpZGU7Ci0gICAgCisKICAgICAvLyBNZXNz
YWdlU2VuZGVyLgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBvdmVycmlkZTsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDBlNjNjM2YuLmM3ZTMw
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTIwNiwxNyArMjA2LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKFNlc3Npb25JRAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKLSAgICBsb2FkZXItPm5ldHdvcmtMb2FkKCktPmNvbnZlcnRUYXNr
VG9Eb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7Ci0gICAgbG9hZGVyLT5k
aWRDb252ZXJ0VG9Eb3dubG9hZCgpOwotI2Vsc2UKLSAgICBuZXR3b3JrUHJvY2Vzcy5kb3dubG9h
ZE1hbmFnZXIoKS5jb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChkb3dubG9hZElELCBsb2FkZXItPm5l
dHdvcmtMb2FkKCktPmhhbmRsZSgpLCByZXF1ZXN0LCByZXNwb25zZSk7Ci0KLSAgICAvLyBVbmJs
b2NrIHRoZSBVUkwgY29ubmVjdGlvbiBvcGVyYXRpb24gcXVldWUuCi0gICAgbG9hZGVyLT5uZXR3
b3JrTG9hZCgpLT5oYW5kbGUoKS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKLQotICAg
IGxvYWRlci0+ZGlkQ29udmVydFRvRG93bmxvYWQoKTsKLSNlbmRpZgorICAgIGxvYWRlci0+Y29u
dmVydFRvRG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaAppbmRleCA2ZGE0MWMyLi42YzI3ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNjMsNyArNjMsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lRG93
bmxvYWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hv
d1VSTCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggYTI5NmQ2NS4uODYwMDM3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
QEAgLTQ3Miw5ICs0NzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkK
ICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5n
RG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVh
dGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKIAotICAgIEFTU0VSVCht
X2NsaWVudCk7Ci0gICAgbV9jbGllbnQtPmRpZEJlY29tZURvd25sb2FkKCk7Ci0KKyAgICBBU1NF
UlQoIW1fY2xpZW50KTsKICAgICBtX2J1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CiAgICAgcmVh
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
CmluZGV4IDEyNjc1MDUuLmJkZTgxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IE5ldHdvcmtMb2Fk
OjpUaHJvdHRsZSB7CiB9OwogCiBOZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRD
bGllbnQmIGNsaWVudCwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTmV0d29y
a1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uKQotICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIDog
bV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMp
KQogICAgICwgbV9jdXJyZW50UmVxdWVzdChtX3BhcmFtZXRlcnMucmVxdWVzdCkKIHsKQEAgLTc1
LDcgKzc1LDcgQEAgTmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKE5ldHdvcmtMb2FkQ2xpZW50JiBj
bGllbnQsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmEKICNlbHNlCiAKIE5ldHdvcmtMb2Fk
OjpOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVudCYgY2xpZW50LCBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQotICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIDogbV9jbGll
bnQoJmNsaWVudCkKICAgICAsIG1fcGFyYW1ldGVycyhXVEZNb3ZlKHBhcmFtZXRlcnMpKQogICAg
ICwgbV9uZXR3b3JraW5nQ29udGV4dChSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKG1f
cGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0KSkKICAgICAsIG1fY3VycmVudFJlcXVlc3QobV9wYXJhbWV0ZXJz
LnJlcXVlc3QpCkBAIC0xODUsNyArMTg1LDcgQEAgTmV0d29ya0xvYWRDbGllbnQ6OlNob3VsZENv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIE5ldHdvcmtMb2FkOjpzaGFyZWREaWRSZWNlaXYKICAg
ICBpZiAobV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvKQogICAgICAgICByZXNwb25z
ZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CiAKLSAgICByZXR1cm4gbV9jbGllbnQuZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPmRp
ZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xv
YWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0xOTYsMjEgKzE5
NiwyMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlcwogCiAgICAgYXV0byBvbGRSZXF1ZXN0ID0g
V1RGTW92ZShtX2N1cnJlbnRSZXF1ZXN0KTsKICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVz
dDsKLSAgICBtX2NsaWVudC53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUob2xkUmVx
dWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOworICAg
IG1fY2xpZW50LT53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUob2xkUmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkpOwogfQogCiAjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKIAotdm9pZCBOZXR3b3JrTG9hZDo6Y29udmVydFRhc2tUb0Rv
d25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiB1cGRh
dGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIE5ldHdv
cmtMb2FkOjpjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2FkJiBwZW5kaW5nRG93
bmxvYWQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgdXBkYXRlZFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1
cm47CiAKKyAgICBtX2NsaWVudCA9ICZwZW5kaW5nRG93bmxvYWQ7CiAgICAgbV9jdXJyZW50UmVx
dWVzdCA9IHVwZGF0ZWRSZXF1ZXN0OwotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5k
b3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjpEaWRTdGFydChtX2N1cnJlbnRSZXF1ZXN0LCBTdHJpbmcoKSksIGRv
d25sb2FkSUQuZG93bmxvYWRJRCgpKTsKLSAgICBtX3Rhc2stPnNldFBlbmRpbmdEb3dubG9hZElE
KGRvd25sb2FkSUQpOwotICAgIAotICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIpOworICAgIG1fdGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkKHBlbmRpbmdEb3dubG9hZCk7CisK
ICAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBOZXR3b3JrUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCptX3Rhc2suZ2V0
KCksIHN0ZDo6ZXhjaGFuZ2UobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSwg
cmVzcG9uc2UpOwogfQpAQCAtMjYzLDcgKzI2Miw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJl
Y2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwK
ICAgICBtX2NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogICAgIG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlQXN5bmMoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICBt
X2NsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CiAjZWxzZQogICAgIGNvbXBsZXRlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogI2VuZGlmCkBAIC0zMzgs
NyArMzM3LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29k
ZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNp
emUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92
ZShidWZmZXIpLCBzaXplKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zNDYsOSArMzQ1LDkgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiAgICAgQVNTRVJUKCFtX3Rocm90dGxlKTsKIAogICAgIGlmIChlcnJvci5pc051bGwo
KSkKLSAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZGluZyhXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Ns
aWVudC5kaWRGYWlsTG9hZGluZyhlcnJvcik7CisgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsTG9h
ZGluZyhlcnJvcik7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnRocm90dGxlRGVsYXlDb21wbGV0
ZWQoKQpAQCAtMzYwLDI0ICszNTksMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxh
eUNvbXBsZXRlZCgpCiAgICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUodGhyb3R0
bGUtPnJlc3BvbnNlKSwgV1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRCZWNvbWVEb3dubG9hZCgpCi17Ci0gICAg
bV9jbGllbnQuZGlkQmVjb21lRG93bmxvYWQoKTsKLX0KLQogdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkKIHsKLSAgICBtX2NsaWVudC5kaWRTZW5kRGF0YSh0b3RhbEJ5dGVzU2VudCwg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKKyAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEodG90
YWxCeXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiB9CiAKIHZvaWQgTmV0d29y
a0xvYWQ6Ondhc0Jsb2NrZWQoKQogewotICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkaW5nKGJsb2Nr
ZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CisgICAgbV9jbGllbnQtPmRpZEZhaWxMb2FkaW5n
KGJsb2NrZWRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OmNhbm5vdFNob3dVUkwoKQogewotICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkaW5nKGNhbm5vdFNo
b3dVUkxFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CisgICAgbV9jbGllbnQtPmRpZEZhaWxMb2Fk
aW5nKGNhbm5vdFNob3dVUkxFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CiB9CiAKICNlbHNlCkBA
IC0zOTksMTMgKzM5MywxMyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHVuc2lnbgogdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgbV9jbGll
bnQuZGlkRmluaXNoTG9hZGluZyhmaW5pc2hUaW1lKTsKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNo
TG9hZGluZyhmaW5pc2hUaW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTQxMyw3
ICs0MDcsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
LCAhaGFuZGxlIHx8IGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAgQVNTRVJUKCFlcnJvci5pc051
bGwoKSk7CiAKLSAgICBtX2NsaWVudC5kaWRGYWlsTG9hZGluZyhlcnJvcik7CisgICAgbV9jbGll
bnQtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6d2lsbFNl
bmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC00MzYsNyAr
NDMwLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW4KICAgICB9CiAKICAgICBtX3dhaXRpbmdG
b3JDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UgPSB0cnVlOwot
ICAgIG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhw
cm90ZWN0aW9uU3BhY2UpOworICAgIG1fY2xpZW50LT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlQXN5bmMocHJvdGVjdGlvblNwYWNlKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9h
ZDo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgcmVz
dWx0KQpAQCAtNDY1LDcgKzQ1OSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFNlbmREYXRhKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CiAKLSAgICBtX2NsaWVu
dC5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgbV9jbGll
bnQtPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9p
ZCBOZXR3b3JrTG9hZDo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggM2Y2MTMwMS4uZDQ5
ZmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQgY29udmVydFRhc2tU
b0Rvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGNvbnZlcnRUYXNrVG9E
b3dubG9hZChQZW5kaW5nRG93bmxvYWQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBzZXRQZW5kaW5n
RG93bmxvYWRJRChEb3dubG9hZElEKTsKICAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkKFBlbmRpbmdEb3dubG9h
ZCYpOwpAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFsOwogICAgIHZvaWQgcmVjZWl2ZWRD
YW5jZWxsYXRpb24oV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFsOwogICAgIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tz
KCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhS
KCkgZmluYWwgeyByZXR1cm4gbV9jbGllbnQuaXNTeW5jaHJvbm91cygpOyB9CisgICAgYm9vbCBs
b2FkaW5nU3luY2hyb25vdXNYSFIoKSBmaW5hbCB7IHJldHVybiBtX2NsaWVudC0+aXNTeW5jaHJv
bm91cygpOyB9CiAjZWxzZQogICAgIC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAogICAgIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKQEAgLTEyMSw3ICsxMjEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
dG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7
CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CiAgICAgdm9pZCBjYW5ub3RTaG93VVJMKCkg
ZmluYWw7CkBAIC0xMzIsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBsZXRlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjZW5k
aWYKIAotICAgIE5ldHdvcmtMb2FkQ2xpZW50JiBtX2NsaWVudDsKKyAgICBOZXR3b3JrTG9hZENs
aWVudCogbV9jbGllbnQ7CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1fcGFyYW1l
dGVyczsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRh
c2s+IG1fdGFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCmluZGV4IDdiMWExMzUuLjg3YTUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtNTcsOSArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgPSAwOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdmlydHVhbCB2b2lkIGRp
ZEJlY29tZURvd25sb2FkKCkgPSAwOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDM3MWU2ZDUuLmNlOTQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtMjc0LDIxICsyNzQsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXAo
KQogICAgIG1fY29ubmVjdGlvbi0+ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKCp0aGlzKTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZENvbnZlcnRUb0Rvd25sb2FkKCkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZChEb3dubG9hZElEIGRv
d25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKCFtX2RpZENvbnZlcnRUb0Rvd25sb2Fk
KTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7Ci0gICAgbV9kaWRDb252ZXJ0VG9Eb3dubG9h
ZCA9IHRydWU7CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdl
cigpLmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoZG93bmxvYWRJRCwgV1RGTW92ZShtX25l
dHdvcmtMb2FkKSwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQotICAgIAotI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQmVjb21lRG93bmxvYWQo
KQotewotICAgIEFTU0VSVChtX2RpZENvbnZlcnRUb0Rvd25sb2FkKTsKLSAgICBBU1NFUlQobV9u
ZXR3b3JrTG9hZCk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7Ci19Ci0jZW5kaWYKIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKIHsKQEAgLTI5Nyw3ICsyODcsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImFib3J0OiBDYW5jZWxpbmcgcmVzb3VyY2UgbG9hZCAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
CiAgICAgICAgIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKLSAgICBpZiAobV9uZXR3b3JrTG9hZCAmJiAh
bV9kaWRDb252ZXJ0VG9Eb3dubG9hZCkgeworICAgIGlmIChtX25ldHdvcmtMb2FkKSB7CiAjaWYg
RU5BQkxFKE5FVFdPUktfQ0FDSEUpCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShtX25ldHdvcmtM
b2FkLT5jdXJyZW50UmVxdWVzdCgpKSkgewogICAgICAgICAgICAgLy8gV2UgbWlnaHQgYWxyZWFk
eSBoYXZlIHVzZWQgZGF0YSBmcm9tIHRoaXMgaW5jb21wbGV0ZSBsb2FkLiBFbnN1cmUgb2xkZXIg
dmVyc2lvbnMgZG9uJ3QgcmVtYWluIGluIHRoZSBjYWNoZSBhZnRlciBjYW5jZWwuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CmluZGV4IDY5YzZhYzUuLjk3MmIyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIE5ldHdvcmtSZXNvdXJjZUxvYWRlcl9oCiAjZGVmaW5lIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcl9oCiAKKyNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgpAQCAtOTUsMTEgKzk2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBvdmVycmlk
ZTsKLSNlbmRpZgotICAgIAotICAgIHZvaWQgZGlkQ29udmVydFRvRG93bmxvYWQoKTsKKworICAg
IHZvaWQgY29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgYm9v
bCBpc01haW5SZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnJl
cXVlc3RlcigpID09IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluOyB9
CiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKQEAgLTE1Miw3ICsx
NTAsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRh
PiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogCi0gICAgYm9vbCBtX2RpZENv
bnZlcnRUb0Rvd25sb2FkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkQ29uc3VtZVNhbmRib3hF
eHRlbnNpb25zIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGVmZXJzTG9hZGluZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkRGF0YSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCA1ZjNkYTNhLi5lOTdmYjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTY2LDcgKzY2LDYgQEAgcHJpdmF0
ZToKICAgICB9CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWwgeyBkZWxl
dGUgdGhpczsgfQotICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbCB7IH0KICAgICB2
b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9CiAgICAgdm9pZCBjYW5ub3RT
aG93VVJMKCkgZmluYWwgeyBkZWxldGUgdGhpczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaAppbmRleCBjNWE4YTVhLi5mMjg4NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaApAQCAtNjMsOSArNjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBm
aW5pc2hUaW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQot
ICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0jZW5kaWYKIAogICAgIHZvaWQgYWJvcnQoKTsKICAgICB2b2lkIGRpZENvbXBsZXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA2MzQyZTFjLi4zZWQ4MDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpOwotICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKTsKIAogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMGRkYjQ5OC4uYTUxMmEyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTE3MSwxMiArMTcxLDYgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQog
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZEJlY29tZURvd25sb2FkKCkKLXsKLSAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRCZWNvbWVEb3dubG9hZCgpOwotfQotCiB2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkg
PT0gMzA3IHx8IHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDgpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDdkNzY0NzguLjExZmZjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQpAQCAtMzA0LDcgKzMwNCw2IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24gdG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpCiAgICAgICAg
IEFTU0VSVChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGluYXRpb24o
bmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKTsKICAgICAgICAgZG93
bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKGRvd25sb2FkSUQsIFdURk1v
dmUoZG93bmxvYWQpKTsKLSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRCZWNvbWVEb3dubG9h
ZCgpOwogCiAgICAgICAgIF9zZXNzaW9uLT5hZGREb3dubG9hZElEKFtkb3dubG9hZFRhc2sgdGFz
a0lkZW50aWZpZXJdLCBkb3dubG9hZElEKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRl
eCBjZDViNjFlLi45MzAxNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTg2Miw5ICs4NjIs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBkb3dubG9hZE1h
bmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxvYWRJRCwgV1RG
TW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbiht
X3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKIAotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAg
bV9jbGllbnQtPmRpZEJlY29tZURvd25sb2FkKCk7Ci0KKyAgICBBU1NFUlQoIW1fY2xpZW50KTsK
ICAgICByZWFkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAyYTA3ZDgyLi42NGUwMzJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMTEtMDUgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIE5ldHdv
cmtTZXNzaW9uOiBOZXR3b3JrIHByb2Nlc3MgY3Jhc2ggd2hlbiBjb252ZXJ0aW5nIG1haW4gcmVz
b3VyY2UgdG8gZG93bmxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNwbGl0IC93ZWJraXQyL0Rvd25sb2Fkcy9wb2xpY3ktZGVjaXNpb24tZG93bmxv
YWQgaW4gdHdvLCBvbmUgdG8gdGVzdCB0aGUgZnVsbCBsb2FkIHdoZW4gbWFpbiByZXNvdXJjZSBp
cworICAgICAgICBjb252ZXJ0ZWQgdG8gYSBkb3dubG9hZCBhbmQgYW5vdGhlciBvbmUgdG8gdGVz
dCB0aGUgY2FuY2VsbGF0aW9uIGFzIHRoZSB0ZXN0IHdhcyBkb2luZyBiZWZvcmUuIFdoZW4gZG9p
bmcgdGhlCisgICAgICAgIGZ1bGwgbG9hZCwgZGVsYXkgYSBiaXQgdGhlIGRlY2lkZSBkZXN0aW5h
dGlvbiB0byBlbnN1cmUgdGhlIGxvYWQgaXMgYWJvcnRlZCBiZWZvcmUgdGhlIGRhdGEgdGFzayBo
YXMgYmVjYW1lIGEKKyAgICAgICAgZG93bmxvYWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHA6CisgICAgICAgICh0ZXN0UG9saWN5
UmVzcG9uc2VEb3dubG9hZCk6CisgICAgICAgICh0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZENh
bmNlbCk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDE2LTExLTA0ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgV1RGOjpQYXJraW5nTG90IHNob3VsZCBzdG9w
IHVzaW5nIHN0ZDo6Y2hyb25vIGJlY2F1c2Ugc3RkOjpjaHJvbm86OmR1cmF0aW9uIGNhc3RzIGFy
ZSBwcm9uZSB0byBvdmVyZmxvd3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcAppbmRleCBjMThmNjI5Li4yMGZkZTllIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25s
b2Fkcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RE
b3dubG9hZHMuY3BwCkBAIC01MTUsNiArNTE1LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
dGVzdC0+bV9kb3dubG9hZCA9IGRvd25sb2FkOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkKSk7CisgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QoZG93bmxvYWQsICJkZWNpZGUtZGVzdGluYXRpb24iLCBHX0NBTExCQUNL
KGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX3Np
Z25hbF9jb25uZWN0KGRvd25sb2FkLCAiZmluaXNoZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkRmlu
aXNoZWRDYWxsYmFjayksIHRlc3QpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAg
ICB9CiAKQEAgLTUzOSw2ICs1NDEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVl
UHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9y
eSgpLCBzdWdnZXN0ZWRGaWxlbmFtZSwgbnVsbHB0cikpOwogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0aW9uLmdldCgpLCAw
LCAwKSk7CisgICAgICAgIGlmICh0ZXN0LT5tX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24p
CisgICAgICAgICAgICBnX3VzbGVlcCgwLjIgKiBHX1VTRUNfUEVSX1NFQyk7CiAgICAgICAgIHdl
YmtpdF9kb3dubG9hZF9zZXRfZGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uVVJJLmdl
dCgpKTsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQpAQCAtNTUwLDEyICs1NTQsMTEgQEAg
cHVibGljOgogCiAgICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCkKICAgICB7Ci0g
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImRlY2lkZS1kZXN0aW5h
dGlvbiIsIEdfQ0FMTEJBQ0soZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNhbGxiYWNrKSwgdGhp
cyk7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImZpbmlzaGVk
IiwgR19DQUxMQkFDSyhkb3dubG9hZEZpbmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0
RG93bmxvYWQ+IG1fZG93bmxvYWQ7CisgICAgYm9vbCBtX3Nob3VsZERlbGF5RGVjaWRlRGVzdGlu
YXRpb24geyBmYWxzZSB9OwogfTsKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEb3dubG9hZFVS
SShXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtNjA0LDcgKzYw
NywyOCBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2Fk
KFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAg
IC8vIFRlc3QgdGhhdCBhIGRvd25sb2FkIHN0YXJ0ZWQgYnkgdGhlIHRoZSBwb2xpY3kgY2hlY2tl
ciBjb250YWlucyB0aGUgd2ViIHZpZXcuCisgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpOworICAgIC8vIERlbGF5IHRoZSBE
ZWNpZGVEZXN0aW5hdGlvbiB0byBlbnN1cmUgdGhhdCB0aGUgbG9hZCBpcyBhYm9ydGVkIGJlZm9y
ZSB0aGUgbmV0d29yayB0YXNrIGhhcyBiZWNhbWUgYSBkb3dubG9hZC4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMC4KKyAgICB0ZXN0LT5t
X3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkko
cmVxdWVzdFVSSS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgp
OworCisgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3dubG9hZF9nZXRf
cmVxdWVzdCh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKTsKKyAgICBnX2Fzc2VydChyZXF1ZXN0KTsK
KyAgICBBU1NFUlRfQ01QX0NTVFJJTkcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVz
dCksID09LCByZXF1ZXN0VVJJKTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3
ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCk7CisKKyAgICBHUmVmUHRyPEdGaWxl
PiBkb3dubG9hZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHdlYmtpdF9kb3du
bG9hZF9nZXRfZGVzdGluYXRpb24odGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpKTsKKyAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZG93bmxvYWRGaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlf
aW5mbyhkb3dubG9hZEZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwg
c3RhdGljX2Nhc3Q8R0ZpbGVRdWVyeUluZm9GbGFncz4oMCksIG51bGxwdHIsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0X3NpemUoZG93bmxvYWRGaWxlSW5m
by5nZXQoKSksID4sIDApOworICAgIGdfZmlsZV9kZWxldGUoZG93bmxvYWRGaWxlLmdldCgpLCBu
dWxscHRyLCBudWxscHRyKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93
bmxvYWRDYW5jZWwoUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCit7CiAgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L3Rlc3QucGRmIikuZGF0YSgpOwogICAgIHRlc3QtPmxvYWRVUkkocmVxdWVzdFVSSS5kYXRhKCkp
OwogICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwpAQCAtNjU3LDYgKzY4MSw3
IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBEb3dubG9hZEVycm9yVGVzdDo6YWRkKCJEb3dubG9h
ZHMiLCAicmVtb3RlLWZpbGUtZXJyb3IiLCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IpOwog
ICAgIFdlYlZpZXdEb3dubG9hZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkb3dubG9hZC11
cmkiLCB0ZXN0V2ViVmlld0Rvd25sb2FkVVJJKTsKICAgICBQb2xpY3lSZXNwb25zZURvd25sb2Fk
VGVzdDo6YWRkKCJEb3dubG9hZHMiLCAicG9saWN5LWRlY2lzaW9uLWRvd25sb2FkIiwgdGVzdFBv
bGljeVJlc3BvbnNlRG93bmxvYWQpOworICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0Ojph
ZGQoIkRvd25sb2FkcyIsICJwb2xpY3ktZGVjaXNpb24tZG93bmxvYWQtY2FuY2VsIiwgdGVzdFBv
bGljeVJlc3BvbnNlRG93bmxvYWRDYW5jZWwpOwogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3du
bG9hZHMiLCAibWltZS10eXBlIiwgdGVzdERvd25sb2FkTUlNRVR5cGUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294325</attachid>
            <date>2016-11-09 19:52:41 -0800</date>
            <delta_ts>2016-11-09 20:52:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164220-20161109194830.patch</filename>
            <type>text/plain</type>
            <size>39145</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzhjNTQwMjI1ZmIxZjhh
NzdhNzI5MWY4M2M3Yzc2MGUxOWM0Y2JhNC4uZjY2ZDliZDY2MDUzYjM2ZWIxOGY2YmM3OWJmZTIy
ZjE2ZTQ3NDY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE2LTExLTA5ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBOZXR3b3Jr
U2Vzc2lvbjogTmV0d29yayBwcm9jZXNzIGNyYXNoIHdoZW4gY29udmVydGluZyBtYWluIHJlc291
cmNlIHRvIGRvd25sb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgor
CisgICAgICAgIFJpZ2h0IGFmdGVyIHRoZSBtYWluIHJlc291cmNlIGxvYWQgaXMgY29udmVydGVk
IHRvIGEgZG93bmxvYWQsIHRoZSB3ZWIgcHJvY2VzcyBkZWxldGVzIHRoZSBSZXNvdXJjZUxvYWRl
ciB3aGljaAorICAgICAgICBzZW5kcyB0aGUgUmVtb3ZlTG9hZElkZW50aWZpZXIgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcyBhbmQgdGhlIGxvYWQgaXMgYWJvcnRlZC4gU29tZXRpbWVzIGl0IGhhcHBl
bnMgdGhhdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkgaXMgY2FsbGVk
IHdoaWxlIHRoZSBOZXR3b3JrTG9hZCBpcyBzdGlsbCBkZWNpZGluZyB0aGUgZGVzdGluYXRpb24g
b2YgdGhlCisgICAgICAgIGRvd25sb2FkLiBJbiBzdWNoIGNhc2UsIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkQ29udmVydFRvRG93bmxvYWQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCwgYnV0
IG5vdAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEJlY29tZURvd25sb2FkKCku
IEluIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKSB3ZSBhbHJlYWR5IGhhbmRsZSB0aGUg
Y2FzZSBvZgorICAgICAgICBoYXZpbmcgYSBOZXR3b3JrTG9hZCBhZnRlciBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZENvbnZlcnRUb0Rvd25sb2FkKCkgaGFzIGJlZW4gY2FsbGVkLCB0byBhdm9p
ZCBjYW5jZWxpbmcgdGhlCisgICAgICAgIGxvYWQgaW4gc3VjaCBjYXNlLCBob3dldmVyIGNsZWFu
dXAoKSBpcyBhbHdheXMgY2FsbGVkIHVuY29uZGl0aW9uYWxseSBhbmQgdGhlIE5ldHdvcmtMb2Fk
IGlzIGRlbGV0ZWQgYmVmb3JlCisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQmVj
b21lRG93bmxvYWQoKSBpcyBjYWxsZWQuIFdoZW4gdGhlIE5ldHdvcmtMb2FkIGlzIGRlc3Ryb3ll
ZCB0aGUgTmV0d29ya0RhdGFUYXNrCisgICAgICAgIGNsaWVudCBiZWNvbWVzIG51bGxwdHIsIGxl
YXZpbmcgaXQgaW4gYSBzdGF0ZSB3aGVyZSBib3RoIHRoZSBjbGllbnQgaXMgbnVsbHB0ciBhbmQg
dGhlIGRvd25sb2FkIGhhc24ndCBiZWVuCisgICAgICAgIGNyZWF0ZWQgeWV0LiBUaGF0J3Mgbm90
IGV4cGVjdGVkIHRvIGhhcHBlbiBhbmQgd2hlbiB0aGUgcmVzcG9uc2UgY29tcGxldGlvbiBoYW5k
bGVyIGlzIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgTmV0d29ya0RhdGFUYXNrIGl0IHRyaWVzIHRv
IHVzZSBlaXRoZXIgdGhlIGNsaWVudCBvciB0aGUgZG93bmxvYWQgYW5kIGl0IGNyYXNoZXMuCisg
ICAgICAgIFdlIG5lZWQgdG8gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgUmVzb3VyY2VMb2FkZXIg
YXMgc29vbiBhcyBpdCBiZWNvbWVzIGEgZG93bmxvYWQsIGJlY2F1c2UgdGhhdCdzIHRoZSBleHBl
Y3RlZAorICAgICAgICBiZWhhdmlvciwgYnV0IGF0IHRoZSBzYW1lIHRpbWUgd2UgbmVlZCB0byBr
ZWVwIHRoZSBOZXR3b3JrTG9hZCBhbGl2ZSB1bnRpbCB0aGUgTmV0d29ya0RhdGFUYXNrIGZpbmlz
aGVzIHRvIGJlY29tZQorICAgICAgICBhIGRvd25sb2FkLiBUaGlzIHBhdGNoIGNyZWF0ZXMgYSBQ
ZW5kaW5nRG93bmxvYWQgdG8gdGFrZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBOZXR3b3JrTG9hZCwg
c28gdGhhdAorICAgICAgICBSZXNvdXJjZUxvYWRlciBjYW4gYmUgY2xlYW5lZCB1cCBhbmQgZGVz
dHJveWVkLiBUaGUgRG93bmxvYWRNYW5hZ2VyIG5vdyB3aWxsIGhhbmRsZSB0aGUgUGVuZGluZ0Rv
d25sb2FkIGFzIGlmIGl0CisgICAgICAgIHdhcyBjcmVhdGVkIGJ5IHN0YXJ0RG93bmxvYWQoKSwg
YnV0IGVuc3VyaW5nIGl0J3MgZGVsZXRlZCByaWdodCBiZWZvcmUgdGhlIGZpbmFsIERvd25sb2Fk
IG9iamVjdCBpcyBhZGRlZCB0byB0aGUKKyAgICAgICAgZG93bmxvYWRzIG1hcC4gVGhhdCB3YXkg
TmV0d29ya0RhdGFUYXNrIHdpbGwgYWx3YXlzIGhhdmUgYSB2YWxpZCBjbGllbnQgdW50aWwgdGhl
IGZpbmFsIERvd25sb2FkIGlzIGNyZWF0ZWQsCisgICAgICAgIGZpcnN0IHRoZSBSZXNvdXJjZUxv
YWRlciBhbmQgdGhlbiB0aGUgUGVuZGluZ0Rvd25sb2FkLiBTaW5jZSB0aGUgRG93bmxvYWRNYW5h
Z2VyIGlzIHRoZSBvd25lciBvZiB0aGUKKyAgICAgICAgUGVuZGluZ0Rvd25sb2FkIHdlIG5vIGxv
bmdlciBuZWVkIHRoZSBkaWRCZWNvbWVEb3dubG9hZCgpIGNhbGxiYWNrIHRvIGRlbGV0ZSB0aGUg
TmV0d29ya0xvYWQsIGJlY2F1c2UgdGhlCisgICAgICAgIE5ldHdvcmtMb2FkIHdpbGwgYWx3YXlz
IGJlIG93bmVkIGJ5IHRoZSBQZW5kaW5nRG93bmxvYWQgbm93IHRoYXQgd2lsbCBiZSBkZWxldGVk
IGJ5IHRoZSBEb3dubG9hZE1hbmFnZXIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayk6IENoYW5nZSB0aGUgQVNTRVJUIGJlY2F1
c2UgYXQgdGhpcyBwb2ludCB3ZSBzaG91bGQgYWx3YXlzCisgICAgICAgIGhhdmUgYSBQZW5kaW5n
RG93bmxvYWQsIGFuZCB0aGVuIHJlbW92ZSBpdCBmcm9tIHRoZSBtYXAgaGVyZSBiZWZvcmUgYWRk
aW5nIHRoZSBmaW5hbCBEb3dubG9hZCB0byB0aGUgbWFwLgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOiBUaGlzIHJlcGxhY2Vz
IGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkLCBidXQgaXQgYWxzbyBub3cKKyAgICAgICAgdXNlZCBm
b3IgdGhlIE5ldHdvcmtTZXNzaW9uLiBJdCBjcmVhdGVzIGEgUGVuZGluZ0Rvd25sb2FkIGZvciB0
aGUgZ2l2ZW4gTmV0d29ya0xvYWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6
Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbik6IERvIG5vdCB0YWtlIHRo
ZSBQZW5kaW5nRG93bmxvYWQgZnJvbSB0aGUKKyAgICAgICAgbWFwIGhlcmUsIGp1c3QgY2hlY2sg
aXQncyBwcmVzZW50LCBiZWNhdXNlIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGRhdGFUYXNrQmVj
YW1lRG93bmxvYWRUYXNrKCkuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29u
dmVydEhhbmRsZVRvRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rv
d25sb2FkOjpQZW5kaW5nRG93bmxvYWQpOiBBZGQgYSBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVz
IGEgTmV0d29ya0xvYWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6IEp1c3QgYXNrIHRo
ZSBSZXNvdXJjZUxvYWRlciB0byBiZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBkb3dubG9hZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQpOiBEbyBub3QgY2FsbCBkaWRCZWNvbWVEb3du
bG9hZCgpIGFuZCBhZGQgYW4gYXNzZXJ0IHRvIGVuc3VyZSB0aGUgY2xpZW50CisgICAgICAgIGhh
cyBhbHJlYWR5IGJlZW4gcmVtb3ZlZCByaWdodCBhZnRlciB0aGUgZmluYWwgRG93bmxvYWQgb2Jq
ZWN0IGlzIGNyZWF0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQpOiBVc2UgYSBwb2lu
dGVyIGZvciB0aGUgY2xpZW50IGluc3RlYWQgb2YgYSByZWZlcmVuY2UgYmVjYXVzZSBub3cgd2Ug
bmVlZCB0bworICAgICAgICBjaGFuZ2UgdGhlIGNsaWVudCB3aGVuIHRoZSBsb2FkIGlzIGNvbnZl
cnRlZCB0byBhIGRvd25sb2FkLiBXZSBkb24ndCBuZWVkIHRvIG51bGwgY2hlY2sgdGhlIGNsaWVu
dCBpbiBhbnkgY2FzZQorICAgICAgICBiZWNhdXNlIHRoZSBtZW1iZXIgaXMgb25seSB1cGRhdGVk
IGludGVybmFsbHkgYW5kIGFsd2F5cyBmcm9tIGEgcGFzc2VkIHJlZmVyZW5jZS4KKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWQ6OnNoYXJlZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNvbnZlcnRUYXNrVG9Eb3dubG9hZCk6IFRo
aXMgbm93IHJlY2VpdmVzIGEgUGVuZGluZ0Rvd25sb2FkLiBJdCB1cGRhdGVzIHRoZSBjbGllbnQg
YW5kIG5vCisgICAgICAgIGxvbmdlciBzZW5kcyBEaWRTdGFydCwgYmVjYXVzZSB0aGUgUGVuZGlu
Z0Rvd25sb2FkIHNlbmRzIGl0IG5vdy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRo
RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkU2VuZERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2FzQmxvY2tlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkOjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRGYWlsKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRCZWNv
bWVEb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOiBSZW1v
dmUgZGlkQmVjb21lRG93bmxvYWQoKS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnZlcnRUb0Rvd25sb2FkKTogVGhpcyByZXBsYWNlcyBkaWRCZWNvbWVEb3dubG9hZCgp
IGFuZAorICAgICAgICBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpLiBJdCB0cmFuc2ZlcnMgdGhlIE5l
dHdvcmtMb2FkIHRvIHRoZSBEb3dubG9hZE1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQpOiBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBs
b2FkIHdhcyBjb252ZXJ0ZWQgdG8gYSBkb3dubG9hZCBoZXJlLAorICAgICAgICBiZWNhdXNlIG1f
bmV0d29ya0xvYWQgd2lsbCBhbHdheXMgYmUgbnVsbCBoZXJlIGluIHN1Y2ggY2FzZS4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRCZWNvbWVEb3dubG9hZCk6IERl
bGV0ZWQKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDb252ZXJ0
VG9Eb3dubG9hZCk6IERlbGV0ZWQKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOiBSZW1v
dmUgZGlkQmVjb21lRG93bmxvYWQoKS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDogRGl0dG8uCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDogRGl0dG8uCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06IERpdHRvLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAg
ICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29t
ZURvd25sb2FkVGFzazpdKTogRG8gbm90IGNhbGwgZGlkQmVjb21lRG93bmxvYWQoKS4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCk6IERvIG5vdCBjYWxsIGRp
ZEJlY29tZURvd25sb2FkKCkgYW5kIGFkZCBhbiBhc3NlcnQgdG8gZW5zdXJlIHRoZSBjbGllbnQK
KyAgICAgICAgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIHJpZ2h0IGFmdGVyIHRoZSBmaW5hbCBE
b3dubG9hZCBvYmplY3QgaXMgY3JlYXRlZC4KKwogMjAxNi0xMS0wOSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIyMDg0MzguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGI0MDZkZTc2MWU0OTA2
NWFkMDBjMWExNGEyZTMxODRmNjNiZTJiOGMuLjhhMmQyZWM4MTBlNzU0OTIzMzViNjkxYzhlNDA3
NWJkMzU5MGYzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC02Nyw3ICs2Nyw4IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3du
bG9hZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxv
YWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQogewotICAgIEFTU0VS
VCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKKyAgICBBU1NFUlQo
bV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKKyAgICBtX3BlbmRpbmdE
b3dubG9hZHMucmVtb3ZlKGRvd25sb2FkSUQpOwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29u
dGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lk
ZWQucmVtb3ZlKGRvd25sb2FkSUQpOwogICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBX
VEZNb3ZlKGRvd25sb2FkKSk7CkBAIC05NywyOCArOTgsMzcgQEAgdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2sm
IG5ldHcKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZG93bmxvYWRzV2FpdGluZ0ZvckRlc3RpbmF0
aW9uLnNldChkb3dubG9hZElELCBzdGQ6Om1ha2VfcGFpcjxSZWZQdHI8TmV0d29ya0RhdGFUYXNr
PiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcj4oJm5ldHdvcmtEYXRhVGFzaywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQotI2Vsc2UKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0
SGFuZGxlVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCisjZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKKwordm9pZCBE
b3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBk
b3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYgbmV0d29ya0xvYWQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICBBU1NFUlQoIW1fcGVuZGlu
Z0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRz
LmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4oV1RGTW92
ZShuZXR3b3JrTG9hZCksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisjZWxzZQog
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93
bmxvYWRJRCwgcmVxdWVzdCk7CiAKKyAgICBhdXRvKiBoYW5kbGUgPSBuZXR3b3JrTG9hZC0+aGFu
ZGxlKCk7CisgICAgQVNTRVJUKGhhbmRsZSk7CiAgICAgZG93bmxvYWQtPnN0YXJ0V2l0aEhhbmRs
ZShoYW5kbGUsIHJlc3BvbnNlKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRv
d25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3du
bG9hZCkpOworCisgICAgLy8gVW5ibG9jayB0aGUgVVJMIGNvbm5lY3Rpb24gb3BlcmF0aW9uIHF1
ZXVlLgorICAgIGhhbmRsZS0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKKyNlbmRpZgog
fQotI2VuZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAKIHZvaWQgRG93bmxvYWRNYW5hZ2Vy
Ojpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93
bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCiB7CiAjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBpZiAobV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGlu
YXRpb24uY29udGFpbnMoZG93bmxvYWRJRCkpIHsKLSAgICAgICAgYXV0byBwZW5kaW5nRG93bmxv
YWQgPSBtX3BlbmRpbmdEb3dubG9hZHMudGFrZShkb3dubG9hZElEKTsKICAgICAgICAgYXV0byBw
YWlyID0gbV9kb3dubG9hZHNXYWl0aW5nRm9yRGVzdGluYXRpb24udGFrZShkb3dubG9hZElEKTsK
ICAgICAgICAgYXV0byBuZXR3b3JrRGF0YVRhc2sgPSBXVEZNb3ZlKHBhaXIuZmlyc3QpOwogICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwYWlyLnNlY29uZCk7CiAgICAg
ICAgIEFTU0VSVChuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBBU1NFUlQoY29tcGxldGlvbkhh
bmRsZXIpOwotICAgICAgICBBU1NFUlQoIXBlbmRpbmdEb3dubG9hZCB8fCBwZW5kaW5nRG93bmxv
YWQuZ2V0KCkgPT0gbmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWQoKSk7CisgICAgICAg
IEFTU0VSVChtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogCiAgICAg
ICAgIG5ldHdvcmtEYXRhVGFzay0+c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oZGVzdGluYXRp
b24sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5RG93bmxvYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDkw
NjNmODQ4NzE2ODFjNTFhYjI2NmFjY2EwZmY5YWQ3ZmU5NjY0ZDEuLjc4NTg0MTk0ZTQxYTNhYzA5
MzM2ZDQwNGFjNGMzMDI4MzVmZjMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTUxLDYgKzUx
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjsK
IGNsYXNzIERvd25sb2FkOworY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5kaW5nRG93bmxv
YWQ7CiAKIGNsYXNzIERvd25sb2FkTWFuYWdlciB7CkBAIC04MCw5ICs4MSw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJik7Ci0jZWxzZQotICAgIHZvaWQgY29udmVydEhhbmRsZVRvRG93bmxvYWQoRG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAjZW5kaWYKKyAgICB2b2lk
IGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtMb2FkPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRp
bmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CiAKICAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAppbmRl
eCBkMTZjOTMwZmVkZGExYmVmZTBiZmU5NTFlM2U3NzY5NjRhZWJkMWJhLi44NzY3NzViOGY2Yjdk
NTRiMWYxM2MwOGVlNzA3YjFhYmEwM2MwNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApAQCAt
NDgsNiArNDgsMTUgQEAgUGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoTmV0d29ya0xv
YWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgRG93bmxvYWRJRAogICAgIHNlbmQoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCks
IHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAorUGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQo
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBEb3dubG9hZElEIGRv
d25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCisgICAgOiBtX25ldHdvcmtMb2FkKFdURk1vdmUobmV0d29ya0xv
YWQpKQoreworICAgIG1fbmV0d29ya0xvYWQtPnNldFBlbmRpbmdEb3dubG9hZElEKGRvd25sb2Fk
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KHJlcXVlc3Qs
IFN0cmluZygpKSk7CisKKyAgICBtX25ldHdvcmtMb2FkLT5jb252ZXJ0VGFza1RvRG93bmxvYWQo
KnRoaXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsKK30KKwogdm9pZCBQZW5kaW5nRG93bmxvYWQ6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxv
YWRQcm94eTo6V2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSkpOwpAQCAtNzcsMTEgKzg2LDYgQEAgdm9pZCBQZW5kaW5nRG93
bmxvYWQ6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29s
IGNhbkF1dGgKIH0KICNlbmRpZgogCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6ZGlkQmVjb21lRG93
bmxvYWQoKQotewotICAgIG1fbmV0d29ya0xvYWQgPSBudWxscHRyOwotfQotICAgIAogdm9pZCBQ
ZW5kaW5nRG93bmxvYWQ6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZEZhaWwo
ZXJyb3IsIHsgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDJiMjU2ZGIyZjQwM2ZkMzIwN2Fj
NGI2M2IxYzVjNWI0OGY0YTA5MGQuLjIwOGQ3M2RhZWZmZTJhMGJjYzQwYzlhZjViMDkyMWYwYmJi
ZWQwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgUGVuZGlu
Z0Rvd25sb2FkIDogcHVibGljIE5ldHdvcmtMb2FkQ2xpZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQZW5k
aW5nRG93bmxvYWQoTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIERvd25sb2FkSUQsIE5ldHdvcmtT
ZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKTsKKyAgICBQZW5kaW5nRG93bmxv
YWQoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBEb3dubG9hZElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpAQCAtNjUs
OCArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkgb3Zl
cnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSBvdmVycmlk
ZTsKLSAgICAKKwogICAgIC8vIE1lc3NhZ2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggMGU2M2MzZmRmMjg3OWU3M2E0MGU1NmRhZGMzMGVhYTA5ZTkwNmVlYi4uYzdlMzBi
YzMwNDhjNmVlNzYxZTg4N2IyMzMxOThiYmJjOGJkMzUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtMjA2LDE3ICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoU2Vzc2lvbklECiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIGxv
YWRlci0+bmV0d29ya0xvYWQoKS0+Y29udmVydFRhc2tUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJl
cXVlc3QsIHJlc3BvbnNlKTsKLSAgICBsb2FkZXItPmRpZENvbnZlcnRUb0Rvd25sb2FkKCk7Ci0j
ZWxzZQotICAgIG5ldHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLmNvbnZlcnRIYW5kbGVU
b0Rvd25sb2FkKGRvd25sb2FkSUQsIGxvYWRlci0+bmV0d29ya0xvYWQoKS0+aGFuZGxlKCksIHJl
cXVlc3QsIHJlc3BvbnNlKTsKLQotICAgIC8vIFVuYmxvY2sgdGhlIFVSTCBjb25uZWN0aW9uIG9w
ZXJhdGlvbiBxdWV1ZS4KLSAgICBsb2FkZXItPm5ldHdvcmtMb2FkKCktPmhhbmRsZSgpLT5jb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwotCi0gICAgbG9hZGVyLT5kaWRDb252ZXJ0VG9Eb3du
bG9hZCgpOwotI2VuZGlmCisgICAgbG9hZGVyLT5jb252ZXJ0VG9Eb3dubG9hZChkb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNvb2tpZXNGb3JET00oU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IDZkYTQxYzJiYWM1YmY3
NmExNmQwMjg4MzFkMDgzYzAwYjk3ZjU0YWMuLjZjMjdmNjQ2ZDMwYTcyMzMyY2YyMmRhZjkzOTI1
NmUyY2Q5YWVkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNC
bG9ja2VkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
LmNwcAppbmRleCBhMjk2ZDY1MGI4ZWNlYzcwNDIyMjdhMDMyMTA5YjRjYTg3NzAxMGQxLi44NjAw
MzdkYjhjMmUzZDg0OTljMWQ2ZWY5MDI4NzIzNzg1ZDJkNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDcy
LDkgKzQ3Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogICAgIGRv
d25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9h
ZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3Rp
bmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogCi0gICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICBtX2NsaWVudC0+ZGlkQmVjb21lRG93bmxvYWQoKTsKLQorICAgIEFTU0VSVCghbV9j
bGllbnQpOwogICAgIG1fYnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKICAgICByZWFkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXgg
MTI2NzUwNWI3ZmI0MmEyMzg0MjBlMzZmZjJkZGUxNTEzODI5NThiNi4uYTVmNTJjMDk4NWI4ZDAx
MjQ3YmI3MGM4MzQ4ZTQxNWYyMDdhN2ExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIE5ldHdvcmtMb2FkQ2xp
ZW50OjpTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBOZXR3b3JrTG9hZDo6c2hhcmVk
RGlkUmVjZWl2CiAgICAgaWYgKG1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbykKICAg
ICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwogCi0gICAgcmV0dXJuIG1f
Y2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CisgICAgcmV0dXJu
IG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiB9
CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnNoYXJlZFdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpCkBAIC0xOTYsMjEgKzE5NiwyMCBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzaGFyZWRXaWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlcwogCiAgICAg
YXV0byBvbGRSZXF1ZXN0ID0gV1RGTW92ZShtX2N1cnJlbnRSZXF1ZXN0KTsKICAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX2NsaWVudC53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdURk1vdmUob2xkUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSkpOworICAgIG1fY2xpZW50LmdldCgpLndpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV1RGTW92ZShvbGRSZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVj
dFJlc3BvbnNlKSk7CiB9CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCi12b2lkIE5ldHdv
cmtMb2FkOjpjb252ZXJ0VGFza1RvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHVwZGF0ZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0xvYWQ6OmNvbnZlcnRUYXNrVG9Eb3dubG9hZChQZW5k
aW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiB1cGRh
dGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYg
KCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fY2xpZW50ID0gcGVuZGluZ0Rvd25s
b2FkOwogICAgIG1fY3VycmVudFJlcXVlc3QgPSB1cGRhdGVkUmVxdWVzdDsKLSAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWRQcm94eUNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQobV9jdXJyZW50
UmVxdWVzdCwgU3RyaW5nKCkpLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSk7Ci0gICAgbV90YXNr
LT5zZXRQZW5kaW5nRG93bmxvYWRJRChkb3dubG9hZElEKTsKLSAgICAKLSAgICBBU1NFUlQobV9y
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX3Rhc2stPnNldFBlbmRpbmdEb3dubG9h
ZChwZW5kaW5nRG93bmxvYWQpOworCiAgICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
cikKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmZpbmRQZW5kaW5nRG93bmxv
YWRMb2NhdGlvbigqbV90YXNrLmdldCgpLCBzdGQ6OmV4Y2hhbmdlKG1fcmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciwgbnVsbHB0ciksIHJlc3BvbnNlKTsKIH0KQEAgLTI2Myw3ICsyNjIsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UsCiAgICAgbV9jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CiAjaWYg
VVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICBtX2NoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgbV9jbGllbnQu
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSk7CisgICAgbV9jbGllbnQuZ2V0KCkuY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CiAjZWxz
ZQogICAgIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogI2VuZGlmCkBAIC0zMzgsNyArMzM3LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2Rl
ZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGll
bnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHNpemUpOwogfQogCiB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKQEAgLTM0Niw5ICszNDUsOSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBBU1NFUlQoIW1fdGhy
b3R0bGUpOwogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICBtX2NsaWVudC5kaWRG
aW5pc2hMb2FkaW5nKFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworICAgICAg
ICBtX2NsaWVudC5nZXQoKS5kaWRGaW5pc2hMb2FkaW5nKFdURjo6bW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9jbGllbnQuZGlkRmFpbExvYWRpbmco
ZXJyb3IpOworICAgICAgICBtX2NsaWVudC5nZXQoKS5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9
CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnRocm90dGxlRGVsYXlDb21wbGV0ZWQoKQpAQCAtMzYwLDI0
ICszNTksMTkgQEAgdm9pZCBOZXR3b3JrTG9hZDo6dGhyb3R0bGVEZWxheUNvbXBsZXRlZCgpCiAg
ICAgbm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUodGhyb3R0bGUtPnJlc3BvbnNlKSwg
V1RGTW92ZSh0aHJvdHRsZS0+cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IE5ldHdvcmtMb2FkOjpkaWRCZWNvbWVEb3dubG9hZCgpCi17Ci0gICAgbV9jbGllbnQuZGlkQmVj
b21lRG93bmxvYWQoKTsKLX0KLQogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkU2VuZERhdGEodWludDY0
X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkKIHsK
LSAgICBtX2NsaWVudC5kaWRTZW5kRGF0YSh0b3RhbEJ5dGVzU2VudCwgdG90YWxCeXRlc0V4cGVj
dGVkVG9TZW5kKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRTZW5kRGF0YSh0b3RhbEJ5dGVzU2Vu
dCwgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6d2Fz
QmxvY2tlZCgpCiB7Ci0gICAgbV9jbGllbnQuZGlkRmFpbExvYWRpbmcoYmxvY2tlZEVycm9yKG1f
Y3VycmVudFJlcXVlc3QpKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRGYWlsTG9hZGluZyhibG9j
a2VkRXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpjYW5u
b3RTaG93VVJMKCkKIHsKLSAgICBtX2NsaWVudC5kaWRGYWlsTG9hZGluZyhjYW5ub3RTaG93VVJM
RXJyb3IobV9jdXJyZW50UmVxdWVzdCkpOworICAgIG1fY2xpZW50LmdldCgpLmRpZEZhaWxMb2Fk
aW5nKGNhbm5vdFNob3dVUkxFcnJvcihtX2N1cnJlbnRSZXF1ZXN0KSk7CiB9CiAKICNlbHNlCkBA
IC0zOTksMTMgKzM5MywxMyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIHVuc2lnbgogdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7Ci0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOworICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBkb3VibGUgZmluaXNoVGltZSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFuZGxlKTsKLSAgICBt
X2NsaWVudC5kaWRGaW5pc2hMb2FkaW5nKGZpbmlzaFRpbWUpOworICAgIG1fY2xpZW50LmdldCgp
LmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkBAIC00MTMsNyArNDA3LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkRmFpbChSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBBU1NFUlRfVU5V
U0VEKGhhbmRsZSwgIWhhbmRsZSB8fCBoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIEFTU0VSVCgh
ZXJyb3IuaXNOdWxsKCkpOwogCi0gICAgbV9jbGllbnQuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwor
ICAgIG1fY2xpZW50LmdldCgpLmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3
b3JrTG9hZDo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpCkBAIC00MzYsNyArNDMwLDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW4KICAgICB9CiAK
ICAgICBtX3dhaXRpbmdGb3JDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UgPSB0cnVlOwotICAgIG1fY2xpZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VBc3luYyhwcm90ZWN0aW9uU3BhY2UpOworICAgIG1fY2xpZW50LmdldCgpLmNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhwcm90ZWN0aW9uU3BhY2UpOwog
fQogCiB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCkBAIC00NjUsNyArNDU5LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2UKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1faGFu
ZGxlKTsKIAotICAgIG1fY2xpZW50LmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6Ondhc0Jsb2NrZWQoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oCmluZGV4IDNmNjEzMDE0NjU3NDI4YTEyODc5NTg2NjRhOGQxNWVkYzI3OWYyNDguLjdk
MTRjOGMyYWE2MzgzNmE3MDFkZDE0YjJjNzg3M2Q1OGYzMmRlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogCiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKLSAgICB2b2lkIGNvbnZlcnRUYXNrVG9Eb3dubG9hZChEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgdm9pZCBjb252ZXJ0VGFza1RvRG93bmxvYWQoUGVuZGluZ0Rvd25sb2Fk
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHZvaWQgc2V0UGVuZGluZ0Rvd25sb2FkSUQoRG93bmxvYWRJRCk7
CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldFBlbmRpbmdEb3dubG9hZChQZW5kaW5nRG93bmxvYWQmKTsKQEAgLTExMyw3ICsxMTMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBmaW5hbDsKICAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBm
aW5hbDsKICAgICBib29sIHVzZXNBc3luY0NhbGxiYWNrcygpIGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBib29sIGxvYWRpbmdTeW5jaHJvbm91c1hIUigpIGZpbmFsIHsgcmV0dXJuIG1fY2xp
ZW50LmlzU3luY2hyb25vdXMoKTsgfQorICAgIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhSKCkg
ZmluYWwgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCkuaXNTeW5jaHJvbm91cygpOyB9CiAjZWxzZQog
ICAgIC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKQEAgLTEyMSw3ICsx
MjEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Np
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgp
IGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9j
a2VkKCkgZmluYWw7CiAgICAgdm9pZCBjYW5ub3RTaG93VVJMKCkgZmluYWw7CkBAIC0xMzIsNyAr
MTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjZW5kaWYKIAotICAgIE5ldHdvcmtM
b2FkQ2xpZW50JiBtX2NsaWVudDsKKyAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5ldHdvcmtM
b2FkQ2xpZW50PiBtX2NsaWVudDsKICAgICBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgbV9w
YXJhbWV0ZXJzOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgUmVmUHRyPE5ldHdvcmtE
YXRhVGFzaz4gbV90YXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggN2IxYTEzNTRiNzQzMWU2ZTc2MzVhOGYxODViN2JjZDdk
YWU2OTNlMi4uODdhNTJkMmY0MDA3NGJkZWRjYzg0YzI0ODA3NjFhNDZiMTRmYTk5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBA
IC01Nyw5ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5p
c2hUaW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSA9IDA7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVjb21lRG93bmxvYWQoKSA9IDA7Ci0jZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzcxZTZkNTE4YTAzMzkzNTM4YWUw
NTkzZmMyZjk2ODJiYmNiN2UyMi4uY2U5NDE4NDM4N2M2ZWY4MDBlMjJhOWI2MWQ5NGVjMDU1NGJi
YmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yNzQsMjEgKzI3NCwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y2xlYW51cCgpCiAgICAgbV9jb25uZWN0aW9uLT5kaWRDbGVhbnVwUmVz
b3VyY2VMb2FkZXIoKnRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
Q29udmVydFRvRG93bmxvYWQoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRU
b0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQo
IW1fZGlkQ29udmVydFRvRG93bmxvYWQpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKLSAg
ICBtX2RpZENvbnZlcnRUb0Rvd25sb2FkID0gdHJ1ZTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuY29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChk
b3dubG9hZElELCBXVEZNb3ZlKG1fbmV0d29ya0xvYWQpLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9
Ci0gICAgCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRCZWNvbWVEb3dubG9hZCgpCi17Ci0gICAgQVNTRVJUKG1fZGlkQ29udmVydFRvRG93
bmxvYWQpOwotICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKLSAgICBtX25ldHdvcmtMb2FkID0g
bnVsbHB0cjsKLX0KLSNlbmRpZgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQo
KQogewpAQCAtMjk3LDcgKzI4Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9y
dCgpCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJj
ZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKICAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIAotICAg
IGlmIChtX25ldHdvcmtMb2FkICYmICFtX2RpZENvbnZlcnRUb0Rvd25sb2FkKSB7CisgICAgaWYg
KG1fbmV0d29ya0xvYWQpIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRSkKICAgICAgICAgaWYg
KGNhblVzZUNhY2hlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkpKSB7CiAgICAgICAg
ICAgICAvLyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgdXNlZCBkYXRhIGZyb20gdGhpcyBpbmNvbXBs
ZXRlIGxvYWQuIEVuc3VyZSBvbGRlciB2ZXJzaW9ucyBkb24ndCByZW1haW4gaW4gdGhlIGNhY2hl
IGFmdGVyIGNhbmNlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNjljNmFjNTllYWNmMTk2NTk0ZWZmZDIyNGJk
NDg2NDdkMjkyNWU0Ny4uOTcyYjJkMTJjOWU4YTVkNDA0ZmJhOTQ0Y2Q4ZGI1MGU0ODc0MjUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgTmV0d29ya1Jlc291cmNlTG9h
ZGVyX2gKICNkZWZpbmUgTmV0d29ya1Jlc291cmNlTG9hZGVyX2gKIAorI2luY2x1ZGUgIkRvd25s
b2FkSUQuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xp
ZW50LmgiCkBAIC05NSwxMSArOTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlz
aFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAg
dm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIG92ZXJyaWRlOwotI2VuZGlmCi0gICAgCi0gICAgdm9p
ZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpOworCisgICAgdm9pZCBjb252ZXJ0VG9Eb3dubG9hZChE
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBib29sIGlzTWFpblJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QucmVxdWVzdGVyKCkgPT0gV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW47IH0KICAgICBib29sIGlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0OwpAQCAtMTUyLDcgKzE1MCw2IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsK
ICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IG1fZmls
ZVJlZmVyZW5jZXM7CiAKLSAgICBib29sIG1fZGlkQ29udmVydFRvRG93bmxvYWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9kaWRDb25zdW1lU2FuZGJveEV4dGVuc2lvbnMgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9kZWZlcnNMb2FkaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUmVjZWl2ZWRE
YXRhIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmlu
ZGV4IDVmM2RhM2FkNWExMzJhNDkxZTkyYzUyMWQ4OTljMDM0ZjliY2Y2OGYuLmU5N2ZiNzQ3OTI4
NjBkYWEzNGNhOWY4ODQwODA3MDMxODkwZTk1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaApAQCAtNjYsNyArNjYsNiBAQCBwcml2YXRlOgogICAgIH0KICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbCB7IGRlbGV0ZSB0aGlzOyB9Ci0gICAg
dm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsIHsgfQogICAgIHZvaWQgd2FzQmxvY2tlZCgp
IGZpbmFsIHsgZGVsZXRlIHRoaXM7IH0KICAgICB2b2lkIGNhbm5vdFNob3dVUkwoKSBmaW5hbCB7
IGRlbGV0ZSB0aGlzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFm
MGZhN2UxYTY5NjVmMzFmZWI3ZjQwMjg1Mjg2MDZmN2VjNzk2YjkuLjAyZGYyYzAwNzdhNGJjMzlk
NDUxNWY3MTRjMzY4ZWFiODlmZjM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oCkBAIC02Myw5ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRp
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdm9p
ZCBkaWRCZWNvbWVEb3dubG9hZCgpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LSNlbmRpZgogCiAgICAgdm9pZCBhYm9ydCgpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oCmluZGV4IDYzNDJlMWMzMzQyNjQ2OWM4Nzc2ZWZhYzI2Yzg2N2U0YTlm
YjVmMWUuLjNlZDgwMjg2MDcxYTQ2MWMwMzdjODk2ZTQzYjYyNzQwYzg4YTVlNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7Ci0gICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpOwogCiAgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9h
ZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAwZGRiNDk4ZThmZDY4OTUwOTNlNzRkZjYy
YTVmNDViNzYzYTQyMjAxLi5hNTEyYTJjMzljZTliMjk5YTBhNGVhMThmMjBjNjhlYmI3MzFjMDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMTcxLDEyICsxNzEsNiBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEp
KTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQmVjb21lRG93bmxvYWQoKQot
ewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZEJlY29tZURvd25sb2Fk
KCk7Ci19Ci0KIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDcgfHwgcmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09
IDMwOCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggN2Q3NjQ3ODA2OTU5MDZiNzFiMzZmOThk
ZmQ1YzJjOTU1OGExMzYyMS4uMTFmZmM1NWUyMzg2ODBiNWQzYTM2OWE3ODQxMzZhZDIyMDY2OThj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0zMDQsNyArMzA0LDYgQEAgLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRh
VGFzayAqKWRhdGEKICAgICAgICAgQVNTRVJUKFdlYkNvcmU6OmZpbGVFeGlzdHMobmV0d29ya0Rh
dGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5k
aWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0
aW9uKCkpOwogICAgICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRh
c2soZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPmRpZEJlY29tZURvd25sb2FkKCk7CiAKICAgICAgICAgX3Nlc3Npb24tPmFkZERvd25sb2Fk
SUQoW2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmllcl0sIGRvd25sb2FkSUQpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCmluZGV4IGNkNWI2MWU1NmRhM2Y2OGIyOTA0MDNjNWY4ODViZDU4ZTJl
N2E3MGIuLjkzMDE1YTc5N2RiNzEwYzU2MjU0YTk2NGZiNWNlMGU0NGY4ODA0OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcApAQCAtODYyLDkgKzg2Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZG93bmxvYWQoKQogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2Fk
VGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxv
YWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwog
Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBtX2NsaWVudC0+ZGlkQmVjb21lRG93bmxvYWQo
KTsKLQorICAgIEFTU0VSVCghbV9jbGllbnQpOwogICAgIHJlYWQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkzMWMxZTkwMzFhOWU5
NTAwNGY1ZmJhMGJlODRlMWI2ZmVkNjQ3NGIuLmIyNjA3YTBkMTk2MzAwN2VkOTVhZWY1ZjgzYzY3
M2FiOTFjNGY2OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0xMS0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgTmV0d29ya1Nlc3Npb246IE5ldHdvcmsg
cHJvY2VzcyBjcmFzaCB3aGVuIGNvbnZlcnRpbmcgbWFpbiByZXNvdXJjZSB0byBkb3dubG9hZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBTcGxpdCAv
d2Via2l0Mi9Eb3dubG9hZHMvcG9saWN5LWRlY2lzaW9uLWRvd25sb2FkIGluIHR3bywgb25lIHRv
IHRlc3QgdGhlIGZ1bGwgbG9hZCB3aGVuIG1haW4gcmVzb3VyY2UgaXMKKyAgICAgICAgY29udmVy
dGVkIHRvIGEgZG93bmxvYWQgYW5kIGFub3RoZXIgb25lIHRvIHRlc3QgdGhlIGNhbmNlbGxhdGlv
biBhcyB0aGUgdGVzdCB3YXMgZG9pbmcgYmVmb3JlLiBXaGVuIGRvaW5nIHRoZQorICAgICAgICBm
dWxsIGxvYWQsIGRlbGF5IGEgYml0IHRoZSBkZWNpZGUgZGVzdGluYXRpb24gdG8gZW5zdXJlIHRo
ZSBsb2FkIGlzIGFib3J0ZWQgYmVmb3JlIHRoZSBkYXRhIHRhc2sgaGFzIGJlY2FtZSBhCisgICAg
ICAgIGRvd25sb2FkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3REb3dubG9hZHMuY3BwOgorICAgICAgICAodGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWQp
OgorICAgICAgICAodGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWRDYW5jZWwpOgorICAgICAgICAo
YmVmb3JlQWxsKToKKwogMjAxNi0xMS0wOSAgS3dhbmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBmaXggZXJyb3IgbWVzc2FnZSBjYXVzZWQgYnkgZWlu
YSBsb2cKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0RG93bmxvYWRzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0RG93bmxvYWRzLmNwcAppbmRleCBjMThmNjI5N2FlN2FiOTc3MjVjYjU4MTU1ZGZlN2Y4ZWM3
YjAyNGJhLi4yMGZkZTllNjlhZWVjYWVjNjRlNTJlY2I3MzAzY2I5YTgyNjNkZjhiIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9h
ZHMuY3BwCkBAIC01MTUsNiArNTE1LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgdGVzdC0+
bV9kb3dubG9hZCA9IGRvd25sb2FkOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkKSk7CisgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3QoZG93bmxvYWQsICJkZWNpZGUtZGVzdGluYXRpb24iLCBHX0NBTExCQUNLKGRvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25DYWxsYmFjayksIHRlc3QpOworICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KGRvd25sb2FkLCAiZmluaXNoZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkRmluaXNoZWRD
YWxsYmFjayksIHRlc3QpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CiAK
QEAgLTUzOSw2ICs1NDEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCBz
dWdnZXN0ZWRGaWxlbmFtZSwgbnVsbHB0cikpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRl
c3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0aW9uLmdldCgpLCAwLCAwKSk7
CisgICAgICAgIGlmICh0ZXN0LT5tX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24pCisgICAg
ICAgICAgICBnX3VzbGVlcCgwLjIgKiBHX1VTRUNfUEVSX1NFQyk7CiAgICAgICAgIHdlYmtpdF9k
b3dubG9hZF9zZXRfZGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uVVJJLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQpAQCAtNTUwLDEyICs1NTQsMTEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCkKICAgICB7Ci0gICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImRlY2lkZS1kZXN0aW5hdGlvbiIs
IEdfQ0FMTEJBQ0soZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNhbGxiYWNrKSwgdGhpcyk7Ci0g
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kb3dubG9hZC5nZXQoKSwgImZpbmlzaGVkIiwgR19D
QUxMQkFDSyhkb3dubG9hZEZpbmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWlu
X2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxv
YWQ+IG1fZG93bmxvYWQ7CisgICAgYm9vbCBtX3Nob3VsZERlbGF5RGVjaWRlRGVzdGluYXRpb24g
eyBmYWxzZSB9OwogfTsKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEb3dubG9hZFVSSShXZWJW
aWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtNjA0LDcgKzYwNywyOCBA
QCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkKFBvbGlj
eVJlc3BvbnNlRG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIC8vIFRl
c3QgdGhhdCBhIGRvd25sb2FkIHN0YXJ0ZWQgYnkgdGhlIHRoZSBwb2xpY3kgY2hlY2tlciBjb250
YWlucyB0aGUgd2ViIHZpZXcuCisgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpOworICAgIC8vIERlbGF5IHRoZSBEZWNpZGVE
ZXN0aW5hdGlvbiB0byBlbnN1cmUgdGhhdCB0aGUgbG9hZCBpcyBhYm9ydGVkIGJlZm9yZSB0aGUg
bmV0d29yayB0YXNrIGhhcyBiZWNhbWUgYSBkb3dubG9hZC4KKyAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIyMC4KKyAgICB0ZXN0LT5tX3Nob3Vs
ZERlbGF5RGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOworICAgIHRlc3QtPmxvYWRVUkkocmVxdWVz
dFVSSS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOworCisg
ICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3dubG9hZF9nZXRfcmVxdWVz
dCh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKTsKKyAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICBB
U1NFUlRfQ01QX0NTVFJJTkcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09
LCByZXF1ZXN0VVJJKTsKKworICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRf
ZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCk7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBkb3du
bG9hZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHdlYmtpdF9kb3dubG9hZF9n
ZXRfZGVzdGluYXRpb24odGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpKTsKKyAgICBHUmVmUHRyPEdG
aWxlSW5mbz4gZG93bmxvYWRGaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhk
b3dubG9hZEZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgc3RhdGlj
X2Nhc3Q8R0ZpbGVRdWVyeUluZm9GbGFncz4oMCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0X3NpemUoZG93bmxvYWRGaWxlSW5mby5nZXQo
KSksID4sIDApOworICAgIGdfZmlsZV9kZWxldGUoZG93bmxvYWRGaWxlLmdldCgpLCBudWxscHRy
LCBudWxscHRyKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWRD
YW5jZWwoUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7
CiAgICAgQ1N0cmluZyByZXF1ZXN0VVJJID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qu
cGRmIikuZGF0YSgpOwogICAgIHRlc3QtPmxvYWRVUkkocmVxdWVzdFVSSS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwpAQCAtNjU3LDYgKzY4MSw3IEBAIHZv
aWQgYmVmb3JlQWxsKCkKICAgICBEb3dubG9hZEVycm9yVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAi
cmVtb3RlLWZpbGUtZXJyb3IiLCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IpOwogICAgIFdl
YlZpZXdEb3dubG9hZFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkb3dubG9hZC11cmkiLCB0
ZXN0V2ViVmlld0Rvd25sb2FkVVJJKTsKICAgICBQb2xpY3lSZXNwb25zZURvd25sb2FkVGVzdDo6
YWRkKCJEb3dubG9hZHMiLCAicG9saWN5LWRlY2lzaW9uLWRvd25sb2FkIiwgdGVzdFBvbGljeVJl
c3BvbnNlRG93bmxvYWQpOworICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0OjphZGQoIkRv
d25sb2FkcyIsICJwb2xpY3ktZGVjaXNpb24tZG93bmxvYWQtY2FuY2VsIiwgdGVzdFBvbGljeVJl
c3BvbnNlRG93bmxvYWRDYW5jZWwpOwogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMi
LCAibWltZS10eXBlIiwgdGVzdERvd25sb2FkTUlNRVR5cGUpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>