<?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>195747</bug_id>
          
          <creation_ts>2019-03-14 08:57:21 -0700</creation_ts>
          <short_desc>[PSON] Make sure the WebProcessCache is leveraged when relaunching a process after termination</short_desc>
          <delta_ts>2019-03-15 14:07:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195758</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516507</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-14 08:57:21 -0700</bug_when>
    <thetext>Make sure the WebProcessCache is leverage when relaunching a process after termination (e.g. crash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516511</commentid>
    <comment_count>1</comment_count>
      <attachid>364662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-14 09:27:14 -0700</bug_when>
    <thetext>Created attachment 364662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516534</commentid>
    <comment_count>2</comment_count>
      <attachid>364662</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-14 10:55:13 -0700</bug_when>
    <thetext>Comment on attachment 364662
Patch

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

r=me

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:737
&gt; +void WebPageProxy::reattachToWebProcess(const RegistrableDomain&amp; registrableDomain)

At some point we should probably rename this family of functions to downplay the idea that there used to be a web process. Maybe this should be &quot;attachToWebProcess&quot; or &quot;launchWebProcess&quot;.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1145
&gt; +WebProcessProxy&amp; WebProcessPool::getNewWebProcessForNavigation(WebsiteDataStore&amp; websiteDataStore, WebPageProxy* page, const RegistrableDomain&amp; registrableDomain)

I would call this &quot;webProcessForNavigation&quot;.

We usually use the &quot;get&quot; prefix for out parameters.

Also, we might return an old web process that&apos;s in cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516537</commentid>
    <comment_count>3</comment_count>
      <attachid>364662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-14 11:00:44 -0700</bug_when>
    <thetext>Comment on attachment 364662
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1145
&gt;&gt; +WebProcessProxy&amp; WebProcessPool::getNewWebProcessForNavigation(WebsiteDataStore&amp; websiteDataStore, WebPageProxy* page, const RegistrableDomain&amp; registrableDomain)
&gt; 
&gt; I would call this &quot;webProcessForNavigation&quot;.
&gt; 
&gt; We usually use the &quot;get&quot; prefix for out parameters.
&gt; 
&gt; Also, we might return an old web process that&apos;s in cache.

The issue is that there is the pre-existing WebProcessPool::processForNavigation() which is called on navigation for PSON. WebProcessPool::processForNavigation() then calls this method when it wants to swap. So while I agree we need a better name, I think &quot;webProcessForNavigation&quot; would not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516538</commentid>
    <comment_count>4</comment_count>
      <attachid>364662</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-03-14 11:05:37 -0700</bug_when>
    <thetext>Comment on attachment 364662
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1145
&gt;&gt;&gt; +WebProcessProxy&amp; WebProcessPool::getNewWebProcessForNavigation(WebsiteDataStore&amp; websiteDataStore, WebPageProxy* page, const RegistrableDomain&amp; registrableDomain)
&gt;&gt; 
&gt;&gt; I would call this &quot;webProcessForNavigation&quot;.
&gt;&gt; 
&gt;&gt; We usually use the &quot;get&quot; prefix for out parameters.
&gt;&gt; 
&gt;&gt; Also, we might return an old web process that&apos;s in cache.
&gt; 
&gt; The issue is that there is the pre-existing WebProcessPool::processForNavigation() which is called on navigation for PSON. WebProcessPool::processForNavigation() then calls this method when it wants to swap. So while I agree we need a better name, I think &quot;webProcessForNavigation&quot; would not work.

Maybe just call this webProcess, or webProcessForDomain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516556</commentid>
    <comment_count>5</comment_count>
      <attachid>364669</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-14 11:46:22 -0700</bug_when>
    <thetext>Created attachment 364669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516578</commentid>
    <comment_count>6</comment_count>
      <attachid>364669</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-14 12:11:56 -0700</bug_when>
    <thetext>Comment on attachment 364669
Patch

Clearing flags on attachment: 364669

Committed r242952: &lt;https://trac.webkit.org/changeset/242952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516579</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-14 12:11:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516580</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-14 12:13:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/48896266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517029</commentid>
    <comment_count>9</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-03-15 11:27:39 -0700</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/changeset/243003/webkit

Causing API failures on iOS Simulator

TestWebKitAPI.ProcessSwap.UseWebProcessCacheAfterTermination
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        Received data during response processing, queuing it.
        
        /Volumes/Data/slave/ios-simulator-12-debug/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3238
        Expected equality of these values:
          1U
            Which is: 1
          [processPool _webProcessCountIgnoringPrewarmed]
            Which is: 0
        
        
        /Volumes/Data/slave/ios-simulator-12-debug/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3251
        Expected equality of these values:
          2U
            Which is: 2
          [processPool _webProcessCountIgnoringPrewarmed]
            Which is: 1
        
        
        /Volumes/Data/slave/ios-simulator-12-debug/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:3269
        Expected equality of these values:
          webkitPID
            Which is: 4276
          [webView _webProcessIdentifier]
            Which is: 4279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517120</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-15 14:07:34 -0700</bug_when>
    <thetext>Committed r243009: &lt;https://trac.webkit.org/changeset/243009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364662</attachid>
            <date>2019-03-14 09:27:14 -0700</date>
            <delta_ts>2019-03-14 11:46:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195747-20190314092714.patch</filename>
            <type>text/plain</type>
            <size>18634</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk2MGFkMWUzYTY4OWE4YTc1
YzU2ZWUzZmUxYzVhZTQwNGJmYmVkYWQuLjQ5Mjc2YTFlN2Q5ZjJlZmRiNmJjZGNlZjgyNjg3MWNl
Y2NlN2U1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDMtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gTWFrZSBzdXJlIHRoZSBX
ZWJQcm9jZXNzQ2FjaGUgaXMgbGV2ZXJhZ2Ugd2hlbiByZWxhdW5jaGluZyBhIHByb2Nlc3MgYWZ0
ZXIgdGVybWluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2Ugc3VyZSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGFuZCB0aGUgcHJld2FybWVkIHBy
b2Nlc3MgYXJlIHVzZWQgd2hlbiByZWxhdW5jaGluZyBhIHByb2Nlc3MKKyAgICAgICAgYWZ0ZXIg
dGVybWluYXRpb24gKGUuZy4gY3Jhc2gpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9j
ZXNzRm9yUmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRv
V2ViUHJvY2Vzc1dpdGhJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXROZXdXZWJQcm9jZXNz
Rm9yTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZp
Z2F0aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5UHJl
d2FybVdpdGhEb21haW5JbmZvcm1hdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisKIDIwMTktMDMtMTMgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBTdG9wIGNvbnRlbnQgb2JzZXJ2YXRp
b24gd2hlbiBjb250ZW50IGNhbGxzIHByZXZlbnREZWZhdWx0KCkgb24gdG91Y2ggZXZlbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5YjMzNWE0OTQ3N2Y1
ZDJhMTMwYThhZjk3MDAwYTVmZTFlMmRkMWZhLi44Mzg2ZmRjOWYxYjY5OGFiOTI2ZWM5ZTUyZDlj
OWQzY2MzNDlkZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTczNCw3ICs3MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3luY2hyb25vdXNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUwogICAgIHJldHVyblVz
ZXJEYXRhID0gVXNlckRhdGEobV9wcm9jZXNzLT50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHJl
dHVybkRhdGEuZ2V0KCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQ
cm9jZXNzKCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7CiAgICAgQVNTRVJUKCFtX2lz
Q2xvc2VkKTsKICAgICBBU1NFUlQoIWlzVmFsaWQoKSk7CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBtX3Byb2Nlc3MtPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAogICAgIGF1dG8mIHByb2Nlc3NQb29sID0gbV9wcm9jZXNz
LT5wcm9jZXNzUG9vbCgpOwotICAgIG1fcHJvY2VzcyA9IHByb2Nlc3NQb29sLmNyZWF0ZU5ld1dl
YlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQobV93ZWJzaXRlRGF0YVN0b3JlLmdl
dCgpKTsKKyAgICBtX3Byb2Nlc3MgPSBwcm9jZXNzUG9vbC5nZXROZXdXZWJQcm9jZXNzRm9yTmF2
aWdhdGlvbihtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCksIHRoaXMsIHJlZ2lzdHJhYmxlRG9tYWlu
KTsKICAgICBtX2lzVmFsaWQgPSB0cnVlOwogCiAgICAgbV9wcm9jZXNzLT5hZGRFeGlzdGluZ1dl
YlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6QmVnaW5zVXNpbmdEYXRhU3RvcmU6Olllcyk7
CkBAIC04OTUsNyArODk1LDggQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
OjpyZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgfQogICAgIAogICAgIEFTU0VS
VCghaXNWYWxpZCgpKTsKLSAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSA/IFJlZ2lz
dHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KS0+dXJsKCkpIH0gOiBSZWdpc3RyYWJsZURvbWFpbiB7IH07CisgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+
Y3VycmVudEl0ZW0oKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJyZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9h
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CkBAIC05MjEsNyArOTIyLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzc1dpdGhJdGVtKFdlYkJh
Y2tGb3J3YXIKICAgICB9CiAKICAgICBBU1NFUlQoIWlzVmFsaWQoKSk7Ci0gICAgcmVhdHRhY2hU
b1dlYlByb2Nlc3MoKTsKKyAgICByZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFp
biB7IFVSTChVUkwoKSwgaXRlbS51cmwoKSkgfSk7CiAKICAgICBpZiAoJml0ZW0gIT0gbV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpCiAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0LT5n
b1RvSXRlbShpdGVtKTsKQEAgLTEwOTUsNyArMTA5Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
U2hvCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJlYXR0YWNo
VG9XZWJQcm9jZXNzKCk7CisgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZ2lzdHJhYmxl
RG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2
aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSk7CiAgICAgbG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9u
LmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CkBAIC0xMTQzLDcgKzEx
NDQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIH0KIAogICAgIGlmICghaXNWYWxp
ZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworICAgICAgICByZWF0dGFjaFRv
V2ViUHJvY2Vzcyh7IH0pOwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxT
dHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7CkBAIC0xMTk1LDcgKzEx
OTYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIH0KIAogICAgIGlmICghaXNWYWxp
ZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworICAgICAgICByZWF0dGFjaFRv
V2ViUHJvY2Vzcyh7IH0pOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6U3Vic3Rp
dHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNl
ckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNl
ckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwpAQCAtMTI0NCw3ICsxMjQ1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKICAgICAgICAgbV9pc0xvYWRpbmdBbHRlcm5h
dGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9IHRydWU7CiAKICAgICBpZiAo
IWlzVmFsaWQoKSkKLSAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKKyAgICAgICAgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4geyBiYXNlVVJMIH0pOwogCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0x
MjgxLDcgKzEyODIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQ
STo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIH0KIAogICAgIGlm
ICghaXNWYWxpZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworICAgICAgICBy
ZWF0dGFjaFRvV2ViUHJvY2Vzcyh7IH0pOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5n
QVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgV1RGOjpibGFua1VSTCgpLnN0cmluZygpKTsKQEAg
LTEyOTgsNyArMTI5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEo
QVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBJ
bnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwogCkBAIC0xMzA3LDEzICsx
MzA4LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgSW50UG9pCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgIGlmIChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybFN0cmluZykpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaXNWYWxpZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworICAgICAg
ICByZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IFVSTChVUkwoKSwgdXJs
U3RyaW5nKSB9KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsLCBkb2N1bWVudFBvaW50LCBzY3Jl
ZW5Qb2ludCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Ok5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKHVybFN0cmluZywgZG9jdW1l
bnRQb2ludCwgc2NyZWVuUG9pbnQpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBkYTY4YmU3MDEwNmM4OWU4MDg2Y2EwYjJlNjljYzE3MzllZDhhYjczLi4w
YTZiZGJhNDQyMDc2ZTlkMTM4YzExOTljMGI5YjUyZTUxOTA5NWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTY1NSw3ICsxNjU1LDcgQEAgcHJpdmF0ZToKICNl
bmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIHNldENhblNob3J0
Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2lyY3VpdEhvcml6b250
YWxXaGVlbEV2ZW50cykgeyBtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyA9
IGNhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50czsgfQogCi0gICAgdm9pZCByZWF0
dGFjaFRvV2ViUHJvY2VzcygpOworICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nlc3MoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIHN3YXBUb1dlYlByb2Nlc3Mo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+
JiYsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSk7CiAgICAgdm9pZCBkaWRGYWls
VG9TdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpOwogICAgIHZvaWQgZGlkU3VzcGVuZEFmdGVyUHJv
Y2Vzc1N3YXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCA4YzEzOWQ0NDcyZjEzOWQ3MzQ4OTBhMWI3NzM4ZTM4YmEyMTdmNzBlLi43ZTBjYjYwMTAx
Yzk0MDg1OGVmNTY1OTNmNmRlNTNiODQ3NWNjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQyLDggKzExNDIsMjYgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogI2Vu
ZGlmCiB9CiAKLVdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlBy
b2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0
ZURhdGFTdG9yZSkKK1dlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ld1dlYlBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIFdl
YlBhZ2VQcm94eSogcGFnZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKQogeworICAgIGlmICghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChhdXRvIHByb2Nlc3MgPSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3Ry
YWJsZURvbWFpbiwgd2Vic2l0ZURhdGFTdG9yZSkpCisgICAgICAgICAgICByZXR1cm4gKnByb2Nl
c3M7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHN1c3BlbmRlZCBwYWdlIGZvciB0
aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIGFuZCB1c2UgaXRzIHByb2Nlc3MgaWYgd2UgZG8s
IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgorICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gcGFn
ZSA/IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCAq
cGFnZSwgd2Vic2l0ZURhdGFTdG9yZSkgOiBudWxscHRyKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3dhcHBpbmcsICJVc2luZyBXZWJQcm9jZXNzICVpIGZyb20gYSBTdXNwZW5k
ZWRQYWdlIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICByZXR1
cm4gKnByb2Nlc3M7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBwcm9jZXNzID0g
dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3Mod2Vic2l0ZURhdGFTdG9yZSkpIHsKKyAgICAgICAgUkVM
RUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcgcHJld2FybWVkIHByb2Nlc3MgJWkiLCBw
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKCFyZWdpc3RyYWJsZURv
bWFpbi5pc0VtcHR5KCkpCisgICAgICAgICAgICB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0
aW9uKCpwcm9jZXNzLCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybiAqcHJvY2Vz
czsKKyAgICB9CisKICAgICBpZiAoIXVzZXNTaW5nbGVXZWJQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUpOwogCkBAIC0xMTkyLDEw
ICsxMjEwLDkgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBh
Z2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICAgICAgLy8gU2hhcmluZyBw
cm9jZXNzZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4K
ICAgICAgICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+cHJv
Y2VzcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVk
UHJvY2VzcyhwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0
YVN0b3JlKCkpOwotICAgICAgICBpZiAoIXByb2Nlc3MpCi0gICAgICAgICAgICBwcm9jZXNzID0g
JmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQocGFnZUNvbmZp
Z3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAg
ICAgcHJvY2VzcyA9ICZnZXROZXdXZWJQcm9jZXNzRm9yTmF2aWdhdGlvbihwYWdlQ29uZmlndXJh
dGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsg
fSk7CiAgICAgfQorICAgIEFTU0VSVChwcm9jZXNzKTsKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nl
c3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikp
OwogCkBAIC0yMjE0LDI0ICsyMjMxLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zv
ck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICBh
dXRvJiB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAg
YXV0byB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgdGFyZ2V0VVJMIH07CiAKLSAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYWdlID0gbWFrZVJlZihwYWdlKSwgdGFyZ2V0
VVJMLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgZGF0YVN0b3JlID0gZGF0YVN0b3JlLmNvcHlS
ZWYoKV0gKCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94eT4gewotICAgICAgICBpZiAoYXV0byBwcm9j
ZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3ModGFyZ2V0UmVnaXN0cmFibGVEb21h
aW4sIGRhdGFTdG9yZSkpCi0gICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVs
bCgpOwotCi0gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFnZSBmb3Ig
dGhlIGdpdmVuIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlmIHdlIGRv
LCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KLSAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IGZp
bmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBw
YWdlLCBkYXRhU3RvcmUpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJVc2luZyBXZWJQcm9jZXNzICVpIGZyb20gYSBTdXNwZW5kZWRQYWdlIiwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNl
Tm9uTnVsbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRyeVRh
a2VQcmV3YXJtZWRQcm9jZXNzKGRhdGFTdG9yZSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTd2FwcGluZywgIlVzaW5nIHByZXdhcm1lZCBwcm9jZXNzICVpIiwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICB0cnlQcmV3YXJtV2l0aERvbWFpbklu
Zm9ybWF0aW9uKCpwcm9jZXNzLCB0YXJnZXRVUkwpOwotICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3MucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgIkxhdW5jaGluZyBhIG5ldyBwcm9jZXNzIik7Ci0gICAgICAgIHJldHVy
biBjcmVhdGVOZXdXZWJQcm9jZXNzKGRhdGFTdG9yZSk7CisgICAgYXV0byBjcmVhdGVOZXdQcm9j
ZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGFnZSA9IG1ha2VS
ZWYocGFnZSksIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRhU3RvcmUgPSBkYXRhU3RvcmUu
Y29weVJlZigpXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7CisgICAgICAgIHJldHVybiBn
ZXROZXdXZWJQcm9jZXNzRm9yTmF2aWdhdGlvbihkYXRhU3RvcmUsIHBhZ2UucHRyKCksIHRhcmdl
dFJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICB9OwogCiAgICAgaWYgKHVzZXNTaW5nbGVXZWJQcm9j
ZXNzKCkpCkBAIC0yMjQ3LDcgKzIyNDgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzb3VyY2VQcm9jZXNzKSwgbnVs
bHB0ciwgIkFuIGF1dG9tYXRpb24gc2Vzc2lvbiBpcyBhY3RpdmUiX3MpOwogCiAgICAgaWYgKCFz
b3VyY2VQcm9jZXNzLT5oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCkpIHsKLSAgICAg
ICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzb3VyY2VQcm9jZXNzLCB0YXJnZXRV
UkwpOworICAgICAgICB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKHNvdXJjZVByb2Nl
c3MsIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc291cmNlUHJvY2VzcyksIG51bGxwdHIsICJQcm9jZXNzIGhhcyBub3Qg
eWV0IGNvbW1pdHRlZCBhbnkgcHJvdmlzaW9uYWwgbG9hZHMiX3MpOwogICAgIH0KIApAQCAtMjQ2
Myw5ICsyNDY0LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZv
cm1hdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWEKICAgICAqdmFsdWUgPSBwcmV3
YXJtSW5mb3JtYXRpb247CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRyeVByZXdhcm1XaXRo
RG9tYWluSW5mb3JtYXRpb24oV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBjb25zdCBVUkwmIHVy
bCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24o
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4pCiB7Ci0gICAgYXV0byogcHJld2FybUluZm9ybWF0aW9uID0gbV9wcmV3YXJt
SW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5nZXQoUmVnaXN0cmFibGVEb21haW4geyB1
cmwgfSk7CisgICAgYXV0byogcHJld2FybUluZm9ybWF0aW9uID0gbV9wcmV3YXJtSW5mb3JtYXRp
b25QZXJSZWdpc3RyYWJsZURvbWFpbi5nZXQocmVnaXN0cmFibGVEb21haW4pOwogICAgIGlmICgh
cHJld2FybUluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKCpwcmV3YXJt
SW5mb3JtYXRpb24pLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CmluZGV4IDJiZWMyZmM3YjUzZGQxMTBkNTJlNDRkMmJmMWMxNjc5MDEzODMwMmYuLmMyZTU1Njkz
ODA0M2ZjNDI0MzYwOTA3NzA1OGQ1ZDk3MzU0ODJmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzA1LDcgKzMwNSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNlcnRpZmlj
YXRlSW5mbyosIGNvbnN0IFN0cmluZyYgaG9zdCk7CiAKLSAgICBXZWJQcm9jZXNzUHJveHkmIGNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoV2Vic2l0ZURhdGFT
dG9yZSYpOyAvLyBXaWxsIHJldHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGltaXQgaXMgbWV0Lgor
ICAgIFdlYlByb2Nlc3NQcm94eSYgZ2V0TmV3V2ViUHJvY2Vzc0Zvck5hdmlnYXRpb24oV2Vic2l0
ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJik7IC8vIFdpbGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQgb3Ig
ZHVlIHRvIGNhY2hpbmcuCiAKICAgICBlbnVtIGNsYXNzIE1heUNyZWF0ZURlZmF1bHREYXRhU3Rv
cmUgeyBObywgWWVzIH07CiAgICAgdm9pZCBwcmV3YXJtUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3Jl
KiwgTWF5Q3JlYXRlRGVmYXVsdERhdGFTdG9yZSk7CkBAIC01NzEsNyArNTcxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZFByb2Nlc3NUb09yaWdpbkNhY2hlU2V0KFdlYlByb2Nlc3NQcm94eSYs
IGNvbnN0IFVSTCYpOwogICAgIHZvaWQgcmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldChX
ZWJQcm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1h
dGlvbihXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBVUkwmKTsKKyAgICB2b2lkIHRyeVByZXdhcm1X
aXRoRG9tYWluSW5mb3JtYXRpb24oV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mKTsKIAogICAgIHZvaWQgdXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkZGViNWU5NGUyMDkwZTE5MzM1NzkxYmNmNzZjMjdlZWVkOTlkYTZjLi4zNGZkNmE5NTQ0ZTMz
ZjY1NTM4YmI4YTU0MzIyYjE4ZDc5YjQyMTQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDMtMTQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gTWFrZSBzdXJlIHRo
ZSBXZWJQcm9jZXNzQ2FjaGUgaXMgbGV2ZXJhZ2Ugd2hlbiByZWxhdW5jaGluZyBhIHByb2Nlc3Mg
YWZ0ZXIgdGVybWluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NTc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMTkt
MDMtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSAtW19XS0F0dGFjaG1lbnQgc2V0RmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlv
bjpdIHJvYnVzdCB3aGVuIGdpdmVuIGEgbmlsIGNvbXBsZXRpb24gaGFuZGxlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYjRmNTc4NDM4MGUwZTc2YzFiOTc3NjkzYTBiOWNm
MjU1MTRjNzUzYy4uYWMwNjQ0YWM0OGRiNjEzNjUxMjNiMTFlMjgyZDQ3ZGFiZWQxYjQ5ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0zMjA2LDYgKzMyMDYsNzAgQEAgVEVT
VChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlV2hlbk5hdmlnYXRpbmdGcm9tSlMpCiAgICAgRVhQRUNU
X0VRKDJ1LCBzZWVuUElEcy5zaXplKCkpOwogfQogCitURVNUKFByb2Nlc3NTd2FwLCBVc2VXZWJQ
cm9jZXNzQ2FjaGVBZnRlclRlcm1pbmF0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9j
ZXNzUG9vbC5nZXQoKV07CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUg
YWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAIlBTT04iXTsKKworICAgIGF1dG8gbmF2
aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBpbnQgd2Via2l0UElEID0gMDsKKworICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisKKyAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgd2Via2l0UElEID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRVEo
MVUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93
d3cuYXBwbGUuY29tL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBhdXRvIGFwcGxlUElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVy
XTsKKworICAgIEVYUEVDVF9ORSh3ZWJraXRQSUQsIGFwcGxlUElEKTsKKworICAgIEVYUEVDVF9F
USgyVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOwor
CisgICAgX19ibG9jayBib29sIHdlYlByb2Nlc3NUZXJtaW5hdGVkID0gZmFsc2U7CisgICAgW25h
dmlnYXRpb25EZWxlZ2F0ZSBzZXRXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpeKFdLV2Vi
VmlldyAqKSB7CisgICAgICAgIHdlYlByb2Nlc3NUZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIGtpbGwoYXBwbGVQSUQsIDkpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
d2ViUHJvY2Vzc1Rlcm1pbmF0ZWQpOworICAgIHdlYlByb2Nlc3NUZXJtaW5hdGVkID0gZmFsc2U7
CisKKyAgICBFWFBFQ1RfRVEoMCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisK
KyAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfRVEod2Via2l0UElELCBbd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtwcm9jZXNz
UG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKK30KKwogVEVTVChQcm9j
ZXNzU3dhcCwgTnVtYmVyT2ZQcmV3YXJtZWRQcm9jZXNzZXMpCiB7CiAgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364669</attachid>
            <date>2019-03-14 11:46:22 -0700</date>
            <delta_ts>2019-03-14 12:11:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195747-20190314114622.patch</filename>
            <type>text/plain</type>
            <size>18616</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk2MGFkMWUzYTY4OWE4YTc1
YzU2ZWUzZmUxYzVhZTQwNGJmYmVkYWQuLjg2YzExZjBiMGMwYzIzYTJjY2EzNzk3Y2I5MDEzODY0
NWE5ZTJlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDMtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gTWFrZSBzdXJlIHRoZSBX
ZWJQcm9jZXNzQ2FjaGUgaXMgbGV2ZXJhZ2Ugd2hlbiByZWxhdW5jaGluZyBhIHByb2Nlc3MgYWZ0
ZXIgdGVybWluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAg
ICAgIE1ha2Ugc3VyZSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGFuZCB0aGUgcHJld2FybWVkIHByb2Nl
c3MgYXJlIHVzZWQgd2hlbiByZWxhdW5jaGluZyBhIHByb2Nlc3MKKyAgICAgICAgYWZ0ZXIgdGVy
bWluYXRpb24gKGUuZy4gY3Jhc2gpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNz
Rm9yUmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2Vzc1dpdGhJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlv
bkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVByZXdhcm1X
aXRoRG9tYWluSW5mb3JtYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorCiAyMDE5LTAzLTEzICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gU3RvcCBjb250ZW50IG9ic2VydmF0aW9uIHdo
ZW4gY29udGVudCBjYWxscyBwcmV2ZW50RGVmYXVsdCgpIG9uIHRvdWNoIGV2ZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWIzMzVhNDk0NzdmNWQyYTEz
MGE4YWY5NzAwMGE1ZmUxZTJkZDFmYS4uYmY3MmYwMDIwYTc2YjMzMDQzOTQ2MjcxYmE0MGM0Njdk
MmQzZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03
MzQsNyArNzM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVN5bmNocm9ub3VzTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFMKICAgICByZXR1cm5Vc2VyRGF0
YSA9IFVzZXJEYXRhKG1fcHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhyZXR1cm5E
YXRhLmdldCgpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vz
cygpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3Nl
ZCk7CiAgICAgQVNTRVJUKCFpc1ZhbGlkKCkpOwpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygpCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCk7CiAKICAgICBhdXRvJiBwcm9jZXNzUG9vbCA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKTsKLSAgICBtX3Byb2Nlc3MgPSBwcm9jZXNzUG9vbC5jcmVhdGVOZXdXZWJQcm9j
ZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7
CisgICAgbV9wcm9jZXNzID0gcHJvY2Vzc1Bvb2wucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
KG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSwgdGhpcywgcmVnaXN0cmFibGVEb21haW4pOwogICAg
IG1faXNWYWxpZCA9IHRydWU7CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgq
dGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTg5
NSw3ICs4OTUsOCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlYXR0
YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkKCkKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKCFpc1Zh
bGlkKCkpOwotICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisgICAgYXV0byByZWdpc3RyYWJs
ZURvbWFpbiA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpID8gUmVnaXN0cmFibGVE
b21haW4geyBVUkwoVVJMKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT51cmwo
KSkgfSA6IFJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKKyAgICByZWF0dGFjaFRvV2ViUHJvY2Vzcyhy
ZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50
SXRlbSgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlYXR0
YWNoVG9XZWJQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKQEAgLTkyMSw3ICs5MjIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0Zvcndh
cgogICAgIH0KIAogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKLSAgICByZWF0dGFjaFRvV2ViUHJv
Y2VzcygpOworICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJM
KFVSTCgpLCBpdGVtLnVybCgpKSB9KTsKIAogICAgIGlmICgmaXRlbSAhPSBtX2JhY2tGb3J3YXJk
TGlzdC0+Y3VycmVudEl0ZW0oKSkKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVt
KGl0ZW0pOwpAQCAtMTA5NSw3ICsxMDk2LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKKyAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4g
eyByZXF1ZXN0LnVybCgpIH0pOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9u
U3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKICAgICBsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24uZ2V0KCks
IFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKQEAgLTExNDMsNyArMTE0NCw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0g
ICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9j
ZXNzKHsgfSk7CiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7
CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKQEAgLTExOTUsNyArMTE5Niw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0g
ICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9j
ZXNzKHsgfSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3Jl
YXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0
YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkp
OwogICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CkBAIC0xMjQ0LDcgKzEyNDUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBodG1sRGF0YSwgY29uc3QgUwogICAgICAgICBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxT
dHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkID0gdHJ1ZTsKIAogICAgIGlmICghaXNWYWxp
ZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOworICAgICAgICByZWF0dGFjaFRv
V2ViUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IGJhc2VVUkwgfSk7CiAKICAgICBhdXRvIHRy
YW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTEyODEsNyAr
MTI4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRh
KiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgfQogCiAgICAgaWYgKCFpc1Zh
bGlkKCkpCi0gICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisgICAgICAgIHJlYXR0YWNo
VG9XZWJQcm9jZXNzKHsgfSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0
YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1
ZXN0VVJMKHRyYW5zYWN0aW9uLCBXVEY6OmJsYW5rVVJMKCkuc3RyaW5nKCkpOwpAQCAtMTI5OCw3
ICsxMjk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRh
dGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICBtX3Byb2Nlc3MtPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdh
dGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIEludFBvaW50
IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQordm9pZCBXZWJQYWdlUHJveHk6
Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CiAKQEAgLTEzMDcsMTMgKzEzMDgsMTMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KGNvbnN0IFN0cmluZyYgdXJsLCBJbnRQb2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCisgICAgaWYgKFdURjo6cHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFp
c1ZhbGlkKCkpCi0gICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CisgICAgICAgIHJlYXR0
YWNoVG9XZWJQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcp
IH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmwsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50
LCBzY3JlZW5Qb2ludCksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGRhNjhiZTcwMTA2Yzg5ZTgwODZjYTBiMmU2OWNjMTczOWVkOGFiNzMuLjBhNmJkYmE0
NDIwNzZlOWQxMzhjMTE5OWMwYjliNTJlNTE5MDk1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCBwcml2YXRlOgogI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgc2V0Q2FuU2hvcnRDaXJjdWl0
SG9yaXpvbnRhbFdoZWVsRXZlbnRzKGJvb2wgY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVs
RXZlbnRzKSB7IG1fY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzID0gY2FuU2hv
cnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzOyB9CiAKLSAgICB2b2lkIHJlYXR0YWNoVG9X
ZWJQcm9jZXNzKCk7CisgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgc3dhcFRvV2ViUHJvY2VzcyhSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiwgUmVm
UHRyPFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1N1c3Bl
bmRBZnRlclByb2Nlc3NTd2FwKCk7CiAgICAgdm9pZCBkaWRTdXNwZW5kQWZ0ZXJQcm9jZXNzU3dh
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDhj
MTM5ZDQ0NzJmMTM5ZDczNDg5MGExYjc3MzhlMzhiYTIxN2Y3MGUuLjU0NTBmM2U3MWI0YjU4ODMx
ZDYzYWUzMWIzNTliMDJlZTAxMTM1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTExNDIsOCArMTE0MiwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAjZW5kaWYKIH0K
IAotV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzc1Jl
c3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdChXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0
b3JlKQorV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewor
ICAgIGlmICghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRv
IHByb2Nlc3MgPSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFp
biwgd2Vic2l0ZURhdGFTdG9yZSkpCisgICAgICAgICAgICByZXR1cm4gKnByb2Nlc3M7CisKKyAg
ICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHN1c3BlbmRlZCBwYWdlIGZvciB0aGUgZ2l2ZW4g
cmVnaXN0cmFibGUgZG9tYWluIGFuZCB1c2UgaXRzIHByb2Nlc3MgaWYgd2UgZG8sIGZvciBwZXJm
b3JtYW5jZSByZWFzb25zLgorICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gcGFnZSA/IGZpbmRS
ZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCAqcGFnZSwgd2Vi
c2l0ZURhdGFTdG9yZSkgOiBudWxscHRyKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICJVc2luZyBXZWJQcm9jZXNzICVpIGZyb20gYSBTdXNwZW5kZWRQYWdlIiwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICByZXR1cm4gKnByb2Nl
c3M7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBwcm9jZXNzID0gdHJ5VGFrZVBy
ZXdhcm1lZFByb2Nlc3Mod2Vic2l0ZURhdGFTdG9yZSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcgcHJld2FybWVkIHByb2Nlc3MgJWkiLCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgICAgICB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKCpwcm9j
ZXNzLCByZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgIHJldHVybiAqcHJvY2VzczsKKyAgICB9
CisKICAgICBpZiAoIXVzZXNTaW5nbGVXZWJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBjcmVh
dGVOZXdXZWJQcm9jZXNzKHdlYnNpdGVEYXRhU3RvcmUpOwogCkBAIC0xMTkyLDEwICsxMjEwLDkg
QEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMs
IGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAgICAg
cHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+cHJvY2VzcygpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJvY2Vzcyhw
YWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkp
OwotICAgICAgICBpZiAoIXByb2Nlc3MpCi0gICAgICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5l
d1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQocGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgcHJvY2Vz
cyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4ocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLCBudWxscHRyLCB7IH0pOwogICAgIH0K
KyAgICBBU1NFUlQocHJvY2Vzcyk7CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVX
ZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIApAQCAtMjIx
NCwyNCArMjIzMSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9u
SW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgYXV0byYgdGFyZ2V0
VVJMID0gbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLnVybCgpOwogICAgIGF1dG8gdGFyZ2V0
UmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRhcmdldFVS
TCB9OwogCi0gICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIHRhcmdldFVSTCwgdGFyZ2V0
UmVnaXN0cmFibGVEb21haW4sIGRhdGFTdG9yZSA9IGRhdGFTdG9yZS5jb3B5UmVmKCldICgpIC0+
IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHdlYlBy
b2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLCBkYXRhU3Rv
cmUpKQotICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsKLQotICAg
ICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiBy
ZWdpc3RyYWJsZSBkb21haW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZv
cm1hbmNlIHJlYXNvbnMuCi0gICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBmaW5kUmV1c2FibGVT
dXNwZW5kZWRQYWdlUHJvY2Vzcyh0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgcGFnZSwgZGF0YVN0
b3JlKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcg
V2ViUHJvY2VzcyAlaSBmcm9tIGEgU3VzcGVuZGVkUGFnZSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVk
UHJvY2VzcyhkYXRhU3RvcmUpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJVc2luZyBwcmV3YXJtZWQgcHJvY2VzcyAlaSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOwotICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbigq
cHJvY2VzcywgdGFyZ2V0VVJMKTsKLSAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnJlbGVhc2VO
b25OdWxsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJMYXVuY2hpbmcgYSBuZXcgcHJvY2VzcyIpOwotICAgICAgICByZXR1cm4gY3JlYXRlTmV3
V2ViUHJvY2VzcyhkYXRhU3RvcmUpOworICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCB0
YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgZGF0YVN0b3JlID0gZGF0YVN0b3JlLmNvcHlSZWYoKV0g
KCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94eT4geworICAgICAgICByZXR1cm4gcHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKGRhdGFTdG9yZSwgcGFnZS5wdHIoKSwgdGFyZ2V0UmVnaXN0cmFibGVE
b21haW4pOwogICAgIH07CiAKICAgICBpZiAodXNlc1NpbmdsZVdlYlByb2Nlc3MoKSkKQEAgLTIy
NDcsNyArMjI0OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9u
SW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNvdXJjZVByb2Nlc3MpLCBudWxscHRyLCAiQW4gYXV0
b21hdGlvbiBzZXNzaW9uIGlzIGFjdGl2ZSJfcyk7CiAKICAgICBpZiAoIXNvdXJjZVByb2Nlc3Mt
Pmhhc0NvbW1pdHRlZEFueVByb3Zpc2lvbmFsTG9hZHMoKSkgewotICAgICAgICB0cnlQcmV3YXJt
V2l0aERvbWFpbkluZm9ybWF0aW9uKHNvdXJjZVByb2Nlc3MsIHRhcmdldFVSTCk7CisgICAgICAg
IHRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oc291cmNlUHJvY2VzcywgdGFyZ2V0UmVn
aXN0cmFibGVEb21haW4pOwogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzb3VyY2VQcm9jZXNzKSwgbnVsbHB0ciwgIlByb2Nlc3MgaGFzIG5vdCB5ZXQgY29tbWl0dGVk
IGFueSBwcm92aXNpb25hbCBsb2FkcyJfcyk7CiAgICAgfQogCkBAIC0yNDYzLDkgKzI0NjQsOSBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYQogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZvcm1hdGlv
bjsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1h
dGlvbihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikK
IHsKLSAgICBhdXRvKiBwcmV3YXJtSW5mb3JtYXRpb24gPSBtX3ByZXdhcm1JbmZvcm1hdGlvblBl
clJlZ2lzdHJhYmxlRG9tYWluLmdldChSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9KTsKKyAgICBh
dXRvKiBwcmV3YXJtSW5mb3JtYXRpb24gPSBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJh
YmxlRG9tYWluLmdldChyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgaWYgKCFwcmV3YXJtSW5mb3Jt
YXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oKnByZXdhcm1JbmZvcm1hdGlvbiks
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMmJlYzJm
YzdiNTNkZDExMGQ1MmU0NGQyYmYxYzE2NzkwMTM4MzAyZi4uNjY3MTQxMmJjNWZlNjIyZDg0NWZm
MTFkZWE0ZmIzY2JmNjFkNmE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhbGxvd1NwZWNp
ZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKiwgY29u
c3QgU3RyaW5nJiBob3N0KTsKIAotICAgIFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJv
Y2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdChXZWJzaXRlRGF0YVN0b3JlJik7IC8vIFdp
bGwgcmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQuCisgICAgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYsIFdl
YlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7IC8vIFdpbGwg
cmV0dXJuIGFuIGV4aXN0aW5nIG9uZSBpZiBsaW1pdCBpcyBtZXQgb3IgZHVlIHRvIGNhY2hpbmcu
CiAKICAgICBlbnVtIGNsYXNzIE1heUNyZWF0ZURlZmF1bHREYXRhU3RvcmUgeyBObywgWWVzIH07
CiAgICAgdm9pZCBwcmV3YXJtUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiwgTWF5Q3JlYXRlRGVm
YXVsdERhdGFTdG9yZSk7CkBAIC01NzEsNyArNTcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFk
ZFByb2Nlc3NUb09yaWdpbkNhY2hlU2V0KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFVSTCYpOwog
ICAgIHZvaWQgcmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldChXZWJQcm9jZXNzUHJveHkm
KTsKIAotICAgIHZvaWQgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihXZWJQcm9jZXNz
UHJveHkmLCBjb25zdCBVUkwmKTsKKyAgICB2b2lkIHRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3Jt
YXRpb24oV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
KTsKIAogICAgIHZvaWQgdXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KCk7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZGViNWU5NGUyMDkw
ZTE5MzM1NzkxYmNmNzZjMjdlZWVkOTlkYTZjLi5iMWViZGUzODhlNTZhM2E5N2U5ZDI3MjVjNDY0
OTdjN2I1ZWZlYjRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDMtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gTWFrZSBzdXJlIHRoZSBXZWJQcm9jZXNzQ2Fj
aGUgaXMgbGV2ZXJhZ2Ugd2hlbiByZWxhdW5jaGluZyBhIHByb2Nlc3MgYWZ0ZXIgdGVybWluYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEFkZCBBUEkg
dGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMTktMDMtMTMgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSAtW19XS0F0dGFjaG1l
bnQgc2V0RmlsZVdyYXBwZXI6Y29udGVudFR5cGU6Y29tcGxldGlvbjpdIHJvYnVzdCB3aGVuIGdp
dmVuIGEgbmlsIGNvbXBsZXRpb24gaGFuZGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0KaW5kZXggYjRmNTc4NDM4MGUwZTc2YzFiOTc3NjkzYTBiOWNmMjU1MTRjNzUzYy4uYWMwNjQ0
YWM0OGRiNjEzNjUxMjNiMTFlMjgyZDQ3ZGFiZWQxYjQ5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC0zMjA2LDYgKzMyMDYsNzAgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFn
ZUNhY2hlV2hlbk5hdmlnYXRpbmdGcm9tSlMpCiAgICAgRVhQRUNUX0VRKDJ1LCBzZWVuUElEcy5z
aXplKCkpOwogfQogCitURVNUKFByb2Nlc3NTd2FwLCBVc2VXZWJQcm9jZXNzQ2FjaGVBZnRlclRl
cm1pbmF0aW9uKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOworICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFt3
ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07Cisg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgp
IGZvclVSTFNjaGVtZTpAIlBTT04iXTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0g
YWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbbmF2
aWdhdGlvbkRlbGVnYXRlIHNldERpZEZpbmlzaE5hdmlnYXRpb246XihXS1dlYlZpZXcgKiwgV0tO
YXZpZ2F0aW9uICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBpbnQg
d2Via2l0UElEID0gMDsKKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cu
d2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgd2Via2l0UElEID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRVEoMVUsIFtwcm9jZXNzUG9vbCBf
d2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4u
aHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBhdXRvIGFw
cGxlUElEID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKworICAgIEVYUEVDVF9O
RSh3ZWJraXRQSUQsIGFwcGxlUElEKTsKKworICAgIEVYUEVDVF9FUSgyVSwgW3Byb2Nlc3NQb29s
IF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworCisgICAgX19ibG9jayBib29s
IHdlYlByb2Nlc3NUZXJtaW5hdGVkID0gZmFsc2U7CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSBz
ZXRXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTpeKFdLV2ViVmlldyAqKSB7CisgICAgICAg
IHdlYlByb2Nlc3NUZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGtpbGwoYXBwbGVQ
SUQsIDkpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmd2ViUHJvY2Vzc1Rlcm1pbmF0
ZWQpOworICAgIHdlYlByb2Nlc3NUZXJtaW5hdGVkID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfRVEo
MCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICByZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93
d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7CisKKyAgICBFWFBFQ1RfRVEod2Via2l0UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lk
ZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0Nv
dW50SWdub3JpbmdQcmV3YXJtZWRdKTsKK30KKwogVEVTVChQcm9jZXNzU3dhcCwgTnVtYmVyT2ZQ
cmV3YXJtZWRQcm9jZXNzZXMpCiB7CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>