<?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>173990</bug_id>
          
          <creation_ts>2017-06-29 14:18:29 -0700</creation_ts>
          <short_desc>Split ResourceLoadObserver into 2 classes: one for WebCore and one for the UIProcess</short_desc>
          <delta_ts>2017-06-29 16:49:27 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1324095</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 14:18:29 -0700</bug_when>
    <thetext>Split ResourceLoadObserver into 2 classes: one for WebCore and one for the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324096</commentid>
    <comment_count>1</comment_count>
      <attachid>314165</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 14:19:35 -0700</bug_when>
    <thetext>Created attachment 314165
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324110</commentid>
    <comment_count>2</comment_count>
      <attachid>314174</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 14:43:04 -0700</bug_when>
    <thetext>Created attachment 314174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324119</commentid>
    <comment_count>3</comment_count>
      <attachid>314177</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 15:09:50 -0700</bug_when>
    <thetext>Created attachment 314177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324125</commentid>
    <comment_count>4</comment_count>
      <attachid>314177</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-06-29 15:49:30 -0700</bug_when>
    <thetext>Comment on attachment 314177
Patch

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

r=me. Once this lands we may be able to get rid of the locks entirely in a follow-up patch.

&gt; Source/WebCore/ChangeLog:9
&gt; +        They really have different API and there is therefore close to no code duplication.

Yes -- maybe they should have significantly different names (in the future).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324133</commentid>
    <comment_count>5</comment_count>
      <attachid>314182</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 16:12:43 -0700</bug_when>
    <thetext>Created attachment 314182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324140</commentid>
    <comment_count>6</comment_count>
      <attachid>314182</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 16:40:34 -0700</bug_when>
    <thetext>Comment on attachment 314182
Patch

Clearing flags on attachment: 314182

Committed r218968: &lt;http://trac.webkit.org/changeset/218968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324141</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-29 16:40:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324151</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-29 16:49:27 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 314182:

workers/bomb.html bug 171985 (author: fpizlo@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314165</attachid>
            <date>2017-06-29 14:19:35 -0700</date>
            <delta_ts>2017-06-29 14:43:03 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>173990_split_ResourceLoadObserver_wip.patch</filename>
            <type>text/plain</type>
            <size>49099</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4
IDRmNWE3YjM3ZTI0Li4zMGJkNGJiOWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0zMCwyMiArMzAsMTYgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKLSNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUHVibGljU3VmZml4LmgiCi0j
aW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VVJMLmgiCi0jaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02
OSwzNSArNjMsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzUXVl
dWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQogICAgIEFTU0VSVCghbV9xdWV1ZSk7CiAg
ICAgbV9xdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwotICAgIH0p
OwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7
Ci0gICAgICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlKQotewotICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0
aGluZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UKLSAgICBVTlVTRURfUEFSQU0obW9kaWZp
ZWRTaW5jZSk7Ci0gICAgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwotfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKQEAgLTM2NywyMDEgKzMzMiw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9j
CiAgICAgICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogICAgIH0p
OwogfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29u
c3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih1cmwp
Lmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGlj
cyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJp
bWFyeURvbWFpblN0cmluZyk7Ci0gICAgICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9u
ID0gdHJ1ZTsKLSAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZSA9IFdhbGxUaW1lOjpub3coKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9zdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgcHJpbWFyeURvbWFpblN0cmlu
ZyB9LCB7IH0sIGZhbHNlKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKHVybC5p
c0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRv
JiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAgIAotICAgIHN0YXRpc3RpY3MuaGFkVXNl
ckludGVyYWN0aW9uID0gZmFsc2U7Ci0gICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZSA9IHsgfTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFzSGFk
VXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICh1cmwuaXNCbGFua1VS
TCgpIHx8IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYg
c3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLSAgICAKLSAgICByZXR1cm4gbV9zdG9yZS0+aGFz
SGFkUmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOwotfQotCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAg
ICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkp
OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgc3RhdGlz
dGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAo
dXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkp
OwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgcmV0dXJu
IHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKLX0KLSAgICAKLXZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCi17Ci0g
ICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygp
KTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAgIAotICAgIHN0YXRp
c3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOwotfQotICAgIAotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1
ZSkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0
aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAg
IAotICAgIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCA9IHZhbHVlOwotfQotICAgIAotYm9vbCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsKQotewot
ICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRp
c3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAg
Ci0gICAgcmV0dXJuIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZDsKLX0KLQotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYg
c3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpCi17Ci0gICAgaWYgKHN1YmZyYW1lLmlzQmxh
bmtVUkwoKSB8fCBzdWJmcmFtZS5pc0VtcHR5KCkgfHwgdG9wRnJhbWUuaXNCbGFua1VSTCgpIHx8
IHRvcEZyYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEFTU0VSVCht
X3F1ZXVlKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJpbWFyeVRvcEZyYW1lRG9t
YWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih0b3BGcmFtZSkuaXNvbGF0ZWRDb3B5KCksIHByaW1h
cnlTdWJGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oc3ViZnJhbWUpLmlzb2xhdGVk
Q29weSgpXSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlz
dGljc0xvY2soKSk7Ci0gICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlTdWJGcmFtZURvbWFpblN0
cmluZyk7Ci0gICAgICAgIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5h
ZGQocHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0
IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUpCi17Ci0gICAgaWYgKHN1YnJl
c291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5pc0VtcHR5KCkgfHwgdG9wRnJhbWUu
aXNCbGFua1VSTCgpIHx8IHRvcEZyYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIEFTU0VSVChtX3F1ZXVlKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJp
bWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih0b3BGcmFtZSkuaXNvbGF0
ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4o
c3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgICAgIGF1dG8mIHN0YXRpc3Rp
Y3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHBy
aW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyk7Ci0gICAgICAgIHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQocHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5n
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9z
dE5hbWVSZWRpcmVjdGVkVG8pCi17Ci0gICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8
fCBzdWJyZXNvdXJjZS5pc0VtcHR5KCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNCbGFua1VS
TCgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRvLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIEFTU0VSVChtX3F1ZXVlKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJpbWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihob3N0TmFtZVJlZGly
ZWN0ZWRUbykuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyA9
IHByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyk7Ci0gICAgICAgIHN0
YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQocHJpbWFyeVJlZGlyZWN0
RG9tYWluU3RyaW5nKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgbV9z
dG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKLX0KLQotdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vj
b25kcyBzZWNvbmRzKQotewotICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRp
b25GcmVlKHNlY29uZHMpOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRNaW5p
bXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKLXsKLSAg
ICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29u
ZHMpOwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0UmVkdWNlZFRpbWVz
dGFtcFJlc29sdXRpb24oU2Vjb25kcyBzZWNvbmRzKQotewotICAgIGlmIChzZWNvbmRzID4gMF9z
KQotICAgICAgICB0aW1lc3RhbXBSZXNvbHV0aW9uID0gc2Vjb25kczsKLX0KLQotdm9pZCBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykK
LXsKLSAgICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFs
KHNlY29uZHMpOwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCkKLXsKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0
ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXNdIHsKLSAgICAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcigpCi17Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVz
dGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4K
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
XSB7Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigp
OwotICAgIH0pOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQot
ewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQg
b25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgZG9tYWluc1RvUmVtb3ZlID0g
Q3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSks
IGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShk
b21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7Ci0gICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgY2xl
YXJGaXJzdCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVU
ZWxlbWV0cnlIYW5kbGVyKCkKLXsKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0
aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9zdG9yZS0+ZmlyZVRlbGVtZXRyeUhh
bmRsZXIoKTsKLX0KICAgICAKIFN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cHJpbWFyeURv
bWFpbihjb25zdCBVUkwmIHVybCkKIHsKQEAgLTU4OCw0ICszNTgsNCBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4p
CiAgICAgcmV0dXJuIG1fc3RvcmUgPyBtX3N0b3JlLT5zdGF0aXN0aWNzRm9yT3JpZ2luKG9yaWdp
bikgOiBlbXB0eVN0cmluZygpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGJkNzU5MGJi
YzdiLi42MGE5MmUwOGIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmgKQEAgLTU1LDM2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1dlYlNv
Y2tldExvYWRpbmcoY29uc3QgRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9jdW1lbnQmKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJM
Jik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNv
bnN0IFVSTCYsIGJvb2wgdmFsdWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNHcmFuZGZh
dGhlcmVkKGNvbnN0IFVSTCYpOwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYg
dG9wRnJhbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgdG9wRnJhbWUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KGNvbnN0IFVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUoU2Vjb25kcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNaW5pbXVt
VGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0UmVkdWNlZFRpbWVzdGFtcFJlc29sdXRpb24oU2Vjb25kcyk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7Ci0gICAgCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzUXVldWUoUmVmPFdURjo6V29y
a1F1ZXVlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFySW5NZW1vcnlTdG9yZSgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Up
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4oY29uc3Qg
U3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCBjYmYyMDM0MjE0MS4uNTk1MmY2ZjYwZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQogICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckluTWVtb3J5KCk7Ci0gICAgdm9pZCBjbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnQoKTsKIAotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYmKTsKIAogICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcm
KSBjb25zdDsKQEAgLTgwLDE0ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRHcmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGFDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaXJlVGVsZW1ldHJ5
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgaGFuZGxlcik7CiAKLSAgICB2b2lkIGZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRs
ZXIoKTsKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7Ci0g
ICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKLSAgICB2
b2lkIHNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7Ci0g
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFs
KFNlY29uZHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1l
KFNlY29uZHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKCk7Ci0gICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
LCBib29sIGNsZWFyRmlyc3QpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzU3Rh
dGlzdGljcyhXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCBkYWNkODRjODQ4My4uNjhkNjI4NWQ4ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJv
dG9jb2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBi
b29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0JsYW5rVVJMKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0JsYW5rVVJMKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5u
b3RCZUFCYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbQppbmRleCBiZTFkOTU0OTI4NS4u
MzUxZTdiMWZlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29h
Lm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlci5oIgogCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZE9i
c2VydmVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00MywxOSArNDMsMTUg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6cmVnaXN0ZXJVc2VyRGVm
YXVsdHNJZk5lZWRlZCgpCiAgICAgICAgIAogICAgICAgICBkb3VibGUgdGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJs
ZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uS2V5KCldOwogICAgICAgICBpZiAodGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbiA+IDAgJiYgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8PSAzMCAqIGRheUluU2Vj
b25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigp
LnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24gfSk7CisgICAgICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
T2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyB0aW1lVG9M
aXZlVXNlckludGVyYWN0aW9uIH0pOwogICAgICAgICAKICAgICAgICAgZG91YmxlIHRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlS2V5KCldOwogICAgICAgICBpZiAodGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAwICYmIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRp
b25GcmVlIDw9IGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29u
ZHMgeyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB9KTsKLSAgICAgICAgCi0gICAgICAg
IGRvdWJsZSByZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NSZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbktleSgpXTsKLSAgICAg
ICAgaWYgKHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uID4gMCAmJiByZWR1Y2VkVGltZXN0YW1w
UmVzb2x1dGlvbiA8PSBob3VySW5TZWNvbmRzKQotICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0UmVkdWNlZFRpbWVzdGFtcFJlc29sdXRpb24oU2Vj
b25kcyB7IHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uIH0pOworICAgICAgICAgICAgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUoU2Vjb25kcyB7IHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIH0pOwog
CiAgICAgICAgIGRvdWJsZSBncmFuZGZhdGhlcmluZ1RpbWUgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lS2V5KCldOwogICAgICAgICBpZiAo
Z3JhbmRmYXRoZXJpbmdUaW1lID4gMCAmJiBncmFuZGZhdGhlcmluZ1RpbWUgPD0gNyAqIGRheUlu
U2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZl
cigpLnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgZ3JhbmRmYXRoZXJpbmdUaW1lIH0p
OworICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBncmFuZGZhdGhlcmluZ1RpbWUgfSk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5mMmI1NGZiOGQxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTAsMCArMSwyOTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlciYgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOworICAgIHJldHVybiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjsKK30K
Kwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKFJlZjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYgc3RvcmUpCit7CisgICAgaWYgKG1fc3RvcmUg
JiYgbV9xdWV1ZSkKKyAgICAgICAgbV9xdWV1ZSA9IG51bGxwdHI7CisgICAgbV9zdG9yZSA9IFdU
Rk1vdmUoc3RvcmUpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0
aXN0aWNzUXVldWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQoreworICAgIEFTU0VSVCgh
bV9xdWV1ZSk7CisgICAgbV9xdWV1ZSA9IFdURk1vdmUocXVldWUpOworfQorCit2b2lkIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpjbGVhckluTWVtb3J5U3RvcmUoKQoreworICAgIGlmICghbV9z
dG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcXVldWUpOworICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFt0aGlzXSB7CisgICAgICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnkoKTsK
KyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpCit7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNd
IHsKKyAgICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICB9
KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UpCit7CisgICAgLy8gRm9yIG5vdywgYmUgY29uc2VydmF0aXZlIGFuZCBjbGVhciBl
dmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgbW9kaWZpZWRTaW5jZQorICAgIFVOVVNFRF9QQVJBTSht
b2RpZmllZFNpbmNlKTsKKyAgICBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7Cit9
CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHVybCku
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAgICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKHByaW1hcnlEb21haW5TdHJpbmcpOworICAgICAgICAgICAgc3RhdGlzdGljcy5oYWRVc2Vy
SW50ZXJhY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICAgICAgfQorCisgICAgICAg
IG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IHByaW1hcnlEb21h
aW5TdHJpbmcgfSwgeyB9LCBmYWxzZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQoreworICAg
IGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7
CisgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKworICAgIHN0YXRpc3RpY3Mu
aGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSA9IHsgfTsKK30KKworYm9vbCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwu
aXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Cisg
ICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKworICAgIHJldHVybiBtX3N0b3Jl
LT5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljcyk7Cit9CisKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJs
KQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGlj
c0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKworICAgIHN0
YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7Cit9CisKK2Jvb2wgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7Cisg
ICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNz
TG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworCisgICAgcmV0
dXJuIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKK30KKwordm9pZCBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKK3sK
KyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2Nr
KCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICBzdGF0aXN0
aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSBmYWxzZTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1ZSkK
K3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NM
b2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICBzdGF0
aXN0aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1ZTsKK30KKworYm9vbCBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwu
aXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Cisg
ICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKworICAgIHJldHVybiBzdGF0aXN0
aWNzLmdyYW5kZmF0aGVyZWQ7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNl
dFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBV
UkwmIHRvcEZyYW1lKQoreworICAgIGlmIChzdWJmcmFtZS5pc0JsYW5rVVJMKCkgfHwgc3ViZnJh
bWUuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURv
bWFpbih0b3BGcmFtZSkuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJGcmFtZURvbWFpblN0cmlu
ZyA9IHByaW1hcnlEb21haW4oc3ViZnJhbWUpLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlTdWJGcmFtZURvbWFpblN0cmluZyk7CisgICAgICAgIHN0YXRp
c3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQocHJpbWFyeVRvcEZyYW1lRG9t
YWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFVSTCYgc3VicmVzb3VyY2Us
IGNvbnN0IFVSTCYgdG9wRnJhbWUpCit7CisgICAgaWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwo
KSB8fCBzdWJyZXNvdXJjZS5pc0VtcHR5KCkgfHwgdG9wRnJhbWUuaXNCbGFua1VSTCgpIHx8IHRv
cEZyYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcXVldWUp
OworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJp
bmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJl
c291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0
aWNzTG9jaygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJl
c291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWlu
U3RyaW5nKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2b2lk
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8o
Y29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykK
K3sKKyAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1w
dHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0JsYW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRp
cmVjdGVkVG8uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9xdWV1
ZSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlSZWRpcmVjdERvbWFpblN0
cmluZyA9IHByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkVG8pLmlzb2xhdGVkQ29weSgp
LCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291
cmNlKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9z
dG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3Vi
cmVzb3VyY2VEb21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb25kcykKK3sK
KyAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShzZWNvbmRzKTsK
K30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0TWluaW11bVRpbWVCZXR3ZWVl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9zdG9yZS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKK30KKwordm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMg
c2Vjb25kcykKK3sKKyAgICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKHNlY29uZHMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpm
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQoreworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1
c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpc10geworICAgICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRs
ZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKK3sKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1h
aW4gdGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXNdIHsKKyAgICAgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29s
IGNsZWFyRmlyc3QpCit7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBz
eXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBkb21h
aW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9t
YWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0
cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmlyc3RdIHsKKyAgICAgICAgbV9zdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9t
YWluc1RvQWRkLCBjbGVhckZpcnN0KTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKQoreworICAgIC8vIEhlbHBlciBmdW5j
dGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0
aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3N0b3Jl
LT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOworfQorCitTdHJpbmcgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIHByaW1h
cnlEb21haW4odXJsLmhvc3QoKSk7Cit9CisKK1N0cmluZyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6cHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgaWYgKGhvc3QuaXNO
dWxsKCkgfHwgaG9zdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm51
bGxPcmlnaW4iKTsKKworI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCisgICAgU3RyaW5n
IHByaW1hcnlEb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGhvc3QpOworICAg
IC8vIFdlIHdpbGwgaGF2ZSBhbiBlbXB0eSBzdHJpbmcgaGVyZSBpZiB0aGVyZSBpcyBubyBUTEQu
IFVzZSB0aGUgaG9zdCBhcyBhIGZhbGxiYWNrLgorICAgIGlmICghcHJpbWFyeURvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBwcmltYXJ5RG9tYWluOworI2VuZGlmCisKKyAgICByZXR1
cm4gaG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNDI5YmQ2NThkYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBVUkw7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciB7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPFdlYlJlc291cmNlTG9hZE9ic2VydmVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXImIHNoYXJlZE9ic2VydmVyKCk7CisKKyAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0
aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworCisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29u
c3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBib29sIHZhbHVlKTsKKyAgICBib29sIGlzR3JhbmRmYXRoZXJlZChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUp
OworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOworICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYg
c3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwor
CisgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOworICAgIHZv
aWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyk7CisgICAgdm9pZCBz
ZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOworICAgIHZv
aWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOworCisgICAgdm9pZCBmaXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVz
SGFuZGxlcigpOworICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CisgICAgdm9pZCBmaXJlVGVsZW1ldHJ5
SGFuZGxlcigpOworCisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJik7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzUXVl
dWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnlTdG9yZSgp
OworICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOworICAgIHZvaWQg
Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBTdHJp
bmcgcHJpbWFyeURvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5n
IHByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBob3N0KTsKKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3RvcmU7CisgICAgUmVmUHRyPFdURjo6
V29ya1F1ZXVlPiBtX3F1ZXVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmNwcAppbmRleCAxNTBiMzg3OTk0ZS4uMjg5NGE4YzIyMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0zOCw5NSArMzgsOTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJp
bmcmIGhvc3ROYW1lLCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0UHJldmFsZW50
UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCks
IGhvc3ROYW1lKSk7CiAgICAgZWxzZQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwg
aG9zdE5hbWUpKTsKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9CiAK
IGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzUHJldmFsZW50UmVzb3Vy
Y2UoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwo
VVJMKCksIGhvc3ROYW1lKSk7CisgICAgcmV0dXJuIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0TmFtZSkp
OwogfQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0SGFz
SGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkT2JzZXJ2ZXIoKS5sb2dVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkp
OworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5sb2dV
c2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOwogICAgIGVsc2UKLSAgICAgICAg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJVc2Vy
SW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJM
KCksIGhvc3ROYW1lKSk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFn
ZXI6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgIHJldHVybiBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5oYXNIYWRVc2VySW50ZXJh
Y3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUs
IGJvb2wgdmFsdWUpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSwgdmFsdWUp
OworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldEdyYW5k
ZmF0aGVyZWQoVVJMKFVSTCgpLCBob3N0TmFtZSksIHZhbHVlKTsKIH0KIAogYm9vbCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFN0cmluZyYg
aG9zdE5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLmlzR3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSk7Cisg
ICAgcmV0dXJuIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmlzR3Jh
bmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25z
dCBTdHJpbmcmIGhvc3ROYW1lLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdE5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgaG9zdE5hbWUpLCBVUkwoVVJMKCks
IHRvcEZyYW1lSG9zdE5hbWUpKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
T2JzZXJ2ZXIoKS5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBob3N0
TmFtZSksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOwogfQogCiB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZUhvc3ROYW1l
KQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigp
LnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJMKCksIGhvc3ROYW1lKSwg
VVJMKFVSTCgpLCB0b3BGcmFtZUhvc3ROYW1lKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVS
TChVUkwoKSwgaG9zdE5hbWUpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKIH0KIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluZyYgaG9zdE5h
bWVSZWRpcmVjdGVkVG8pCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZE9ic2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwg
aG9zdE5hbWUpLCBVUkwoVVJMKCksIGhvc3ROYW1lUmVkaXJlY3RlZFRvKSk7CisgICAgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFVSTChVUkwoKSwgaG9zdE5hbWUpLCBVUkwoVVJMKCksIGhvc3ROYW1lUmVkaXJl
Y3RlZFRvKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQogewotICAgIFdlYkNv
cmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oc2Vjb25kcyk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNv
b2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0
aXRpb25GcmVlKHNlY29uZHMpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQog
CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRNaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRNaW5pbXVtVGltZUJl
dHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKHNlY29uZHMpOworICAgIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoc2Vjb25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXI6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCiB7Ci0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRo
ZXJpbmdUaW1lKHNlY29uZHMpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLnNldEdyYW5kZmF0aGVyaW5nVGltZShzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVy
KCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRp
dGlvbkNvb2tpZXNIYW5kbGVyKCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsK
KyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9t
YWluKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
KQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCB7aG9zdE5hbWV9LCBmYWxz
ZSk7CisgICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHtob3N0TmFtZX0sIGZhbHNlKTsK
ICAgICBlbHNlCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7aG9zdE5hbWV9LCB7
IH0sIGZhbHNlKTsKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHtob3N0TmFtZX0sIHsgfSwg
ZmFsc2UpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJl
VGVsZW1ldHJ5SGFuZGxlcigpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZE9ic2VydmVyKCkuZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKKyAgICBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwog
fQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0Tm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlKQpAQCAtMTQ2LDI0ICsx
NDYsMjQgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3IKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCiB7Ci0g
ICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWRPYnNlcnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKIH0K
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKIHsKLSAg
ICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygp
IC0gc3RkOjpjaHJvbm86OmhvdXJzKGhvdXJzKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3Vycykp
OwogfQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6cmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZSgpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbigyNF9oICogMzAu
KTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5z
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKLSAgICBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRNaW5pbXVtVGltZUJldHdlZWVu
RGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CisgICAgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbigyNF9oICogMzAuKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKKyAg
ICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRNaW5pbXVtVGlt
ZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKDFfaCk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CiAgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKGZhbHNlKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChmYWxzZSk7CiAg
ICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh0cnVlKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5U3RvcmUoKTsKKyAg
ICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5
U3RvcmUoKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAppbmRleCBkMjE4NzBkYTQ0Ni4uZjdhNmZlODc2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9u
LmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlTW9uaXRvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRD
b2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTIwNCw4
ICsyMDQsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJT
aGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5z
ZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY29weVJlZigp
KTsKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0
aWNzUXVldWUobV9zdGF0aXN0aWNzUXVldWUuY29weVJlZigpKTsKKyAgICBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY29weVJlZigpKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzUXVldWUobV9zdGF0aXN0aWNzUXVl
dWUuY29weVJlZigpKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0Tm90
aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
ewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBlNmJhY2JmNGFhMS4u
MDgzYzc0ZjgxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZE9ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgpAQCAtNDMsNyArNDQsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRDb3BpZXIuaD4KQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBz
dGQ6OmNocgogI2VuZGlmCiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmUobW9kaWZpZWRTaW5jZSk7CisgICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUobW9kaWZpZWRT
aW5jZSk7CiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkg
cGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0
aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5l
ZWRlZCgpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICNl
bmRpZgogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3MpKQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7Cisg
ICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhh
dCB3ZSBkb24ndCBoYXZlIGFueSBwZW5kaW5nIGNhbGxiYWNrcy4gSWYgc28sIHdlIHdhbnQgdG8g
ZGlzcGF0Y2ggdGhlIGNvbXBsZXRpb24gaGFuZGxlciByaWdodCBhd2F5LgogICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzc1ZGM3OGIwYjAuLmNiZjJlMjhkMjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05MDIsNiArOTAyLDggQEAKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExp
YldlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAq
LzsgfTsKIAkJNDFGQUY1RjkxRTNDMTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3
MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CiAJCTQ0NTBB
RUMwMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwQUVCRjFEQzNGQUU1MDA5OTQz
RjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovOyB9OworCQk0NjM0M0IzQTFGMDU5OTIzMDAw
M0YzMDkgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0NkFCMzIxRjA1OThENDAwOUQwN0ZDIC8qIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCAqLzsgfTsKKwkJNDYzNDNCM0IxRjA1OTkyNjAwMDNG
MzA5IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjQ2QUIzMzFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJDIC8q
IFdLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNz
VGVybWluYXRpb25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0
aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgg
Ki87IH07CiAJCTQ2NTI1MEU2MUVDRjUyREMwMDIwMjVDQiAvKiBXZWJLaXQySW5pdGlhbGl6ZUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1
MjUwRTUxRUNGNTJDRDAwMjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi87IH07
CkBAIC0zMTQzLDYgKzMxNDUsOCBAQAogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hh
cmVkTWVtb3J5Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
U2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBwYXRoID0gY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMg
LyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY0NkFCMzIxRjA1
OThENDAwOUQwN0ZDIC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY0NkFCMzMxRjA1OThENDAwOUQwN0ZDIC8qIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2NTI1MEU1MUVDRjUyQ0QwMDIwMjVDQiAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0MkluaXRpYWxpemVD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAw
QzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFF
NTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg1OSw2ICs2
ODYzLDggQEAKIAkJCQlCQzExMUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5
LmNwcCAqLywKIAkJCQlCQzAzMkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5
LmggKi8sCiAJCQkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk0NjQ2QUIzMjFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwICovLAorCQkJCTQ2NDZBQjMzMUYwNTk4RDQwMDlEMDdGQyAvKiBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovLAogCQkJCTZCRTk2OUExMUU0M0I4QTQwMDhCNzQ4
MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi8sCiAJCQkJNkJFOTY5
OUYxRTQzQjg2RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgg
Ki8sCiAJCQkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAgKi8sCkBAIC04NTY4LDYgKzg1NzQsNyBAQAogCQkJCTBGNTk0N0E4MTg3
QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTQxODdCM0I3
RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2MzQzQjNCMUYwNTk5MjYwMDAzRjMwOSAvKiBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUQxODdCM0I2MDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODFGMUJB
MjVCMjcwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU1QkE4MjUxQkEyNUNGQjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyODQsNiArMTAyOTEsNyBAQAogCQkJCUMw
MzM3REFFMTI3QTI0RkUwMDhGRjRGNCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzAzMkRCQTEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMTExQjVFMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3Rv
cnkubW0gaW4gU291cmNlcyAqLywKKwkJCQk0NjM0M0IzQTFGMDU5OTIzMDAwM0YzMDkgLyogV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTMxMjE0
RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNF
NDY5NTUxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzExMUFERDExMkY1QjkzMDAzMzdCQUIgLyogV2ViRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314174</attachid>
            <date>2017-06-29 14:43:04 -0700</date>
            <delta_ts>2017-06-29 15:09:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173990-20170629144303.patch</filename>
            <type>text/plain</type>
            <size>58609</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQwNmFiMGQ1Y2M1MGJh
N2ExYTE2YTUzZTQ2ZmVjY2FkM2UyOWU1MS4uNWVmODc1YWQ3N2Y0NDlkOTc5OWMzODlhMDEwYWY5
YTdlZDNkMDA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE3LTA2LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgU3BsaXQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIgaW50byAyIGNsYXNzZXM6IG9uZSBmb3IgV2ViQ29yZSBhbmQgb25lIGZvciB0aGUg
VUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTcGxpdCBSZXNvdXJjZUxvYWRPYnNlcnZlciBpbnRvIDIgY2xhc3Nlczogb25lIGZvciBXZWJD
b3JlIGFuZCBvbmUgZm9yIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoZXkgcmVhbGx5IGhhdmUg
ZGlmZmVyZW50IEFQSSBhbmQgdGhlcmUgaXMgdGhlcmVmb3JlIGNsb3NlIHRvIG5vIGNvZGUgZHVw
bGljYXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeURvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaG91bGRMb2cpOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpwcmltYXJ5RG9tYWluKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisKKzIwMTctMDYtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjE4OTQ0LgogCiAgICAgICAgIE9wdGltaXphdGlvbiBpcyBpbmNvcnJlY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA3MjhkMjYzMTU4ZGE2ZTc1MmZhYjg2NWM0YjRiZjU4ZTdmOWY0OTgyLi4zYmVl
Zjc3ODQwZTI5MmFhM2EwYTMwYjAxNDUyYzE1N2FmYjdmNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNzEgQEAKIDIwMTctMDYtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBTcGxpdCBSZXNvdXJjZUxvYWRPYnNlcnZlciBpbnRvIDIgY2xhc3Nlczogb25lIGZv
ciBXZWJDb3JlIGFuZCBvbmUgZm9yIHRoZSBVSVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mzk5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IFJlc291cmNlTG9hZE9ic2VydmVyIGlu
dG8gMiBjbGFzc2VzOiBvbmUgZm9yIFdlYkNvcmUgYW5kIG9uZSBmb3IgdGhlIFVJUHJvY2Vzcy4K
KyAgICAgICAgVGhleSByZWFsbHkgaGF2ZSBkaWZmZXJlbnQgQVBJIGFuZCB0aGVyZSBpcyB0aGVy
ZWZvcmUgY2xvc2UgdG8gbm8gY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OnByaW1hcnlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhckluTWVtb3J5U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dV
c2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
ZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omlz
R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldE1pbmltdW1UaW1l
QmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0TWluaW11bVRpbWVC
ZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2RpZmlj
YXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRT
aW5jZUhvdXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDE3LTA2LTI5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgU2xpZ2h0IGNsZWFuIHVw
IG9mIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczOTc2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDRmNWE3YjM3ZTI0YzUwMzg2NGQ4
MWU1NDkyYTgwOWJiNmY2MWNlYzQuLjc1NTUwNGYyYjI4NTFlOGVmMWQ4NDkzYzNlNzk3YzgzZTNj
ODQ3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmNwcApAQCAtMzAsMjUgKzMwLDIzIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVkZSAiTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgotI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgotI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURvbWFpbihjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsK
K30KKwogc3RhdGljIFNlY29uZHMgdGltZXN0YW1wUmVzb2x1dGlvbiB7IDFfaCB9OwogCiBSZXNv
dXJjZUxvYWRPYnNlcnZlciYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkK
QEAgLTY5LDQyICs2NywxMyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0
aWNzUXVldWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQogICAgIEFTU0VSVCghbV9xdWV1
ZSk7CiAgICAgbV9xdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQotICAgIAotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwot
ICAgIH0pOwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQotewotICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIg
ZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UKLSAgICBVTlVTRURfUEFSQU0o
bW9kaWZpZWRTaW5jZSk7Ci0gICAgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwot
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+
PSAzMDAgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKLWJvb2wgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3VsZExvZyhQYWdlKiBwYWdlKQorYm9vbCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBhZ2UqIHBhZ2UpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IEVyciBvbiB0aGUgc2FmZSBzaWRlIHVudGlsIHdlIGhhdmUgc29ydGVkIG91dCB3aGF0IHRvIGRv
IGluIHdvcmtlciBjb250ZXh0cwogICAgIGlmICghcGFnZSkKQEAgLTM2OCwyMjQgKzMzNyw5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2Vk
VGltZVJlc29sdXRpb24oY29uc3QgRG9jCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAo
dXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlE
b21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAg
ICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NM
b2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluU3RyaW5nKTsKLSAgICAg
ICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aXN0
aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsgfSwgZmFsc2UpOwotICAgIH0p
OwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclVzZXJJbnRlcmFjdGlvbihj
b25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3Rv
cmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5l
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJs
KSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLSAg
ICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OwotfQotCi1i
b29sIFJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJM
JiB1cmwpCi17Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3Jl
LT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkp
OwotICAgIAotICAgIHJldHVybiBtX3N0b3JlLT5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24o
c3RhdGlzdGljcyk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8
IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9
IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eURvbWFpbih1cmwpKTsKLSAgICAKLSAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2Ug
PSB0cnVlOwotfQotCi1ib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjppc1ByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9
IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eURvbWFpbih1cmwpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGlzdGljcy5pc1ByZXZhbGVudFJl
c291cmNlOwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8
fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNl
ID0gZmFsc2U7Ci19Ci0gICAgCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFuZGZh
dGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVlKQotewotICAgIGlmICh1cmwuaXNCbGFu
a1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5ncmFuZGZh
dGhlcmVkID0gdmFsdWU7Ci19Ci0gICAgCi1ib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjppc0dy
YW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkg
fHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYg
c3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGlzdGljcy5n
cmFuZGZhdGhlcmVkOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSkKLXsKLSAgICBpZiAoc3ViZnJhbWUuaXNCbGFua1VSTCgpIHx8IHN1YmZyYW1lLmlzRW1w
dHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0g
cHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0
byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGlj
cy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5T
dHJpbmcpOwotICAgIH0pOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
VVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1
YnJlc291cmNlLmlzRW1wdHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwot
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcg
PSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291
cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5
KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNz
TG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3Ry
aW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
LmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwotICAgIH0pOwotfQotCi12b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3Qg
VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKLXsKLSAg
ICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8
fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0JsYW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVk
VG8uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5UmVkaXJlY3REb21haW5TdHJp
bmcgPSBwcmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwg
cHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJj
ZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0
b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3Rv
cmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJl
c291cmNlRG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcpOwotICAgIH0pOwot
fQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKHNlY29uZHMpOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgbV9z
dG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1l
QmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Ci19Ci0gICAgCi12b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRSZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbihTZWNvbmRzIHNl
Y29uZHMpCi17Ci0gICAgaWYgKHNlY29uZHMgPiAwX3MpCi0gICAgICAgIHRpbWVzdGFtcFJlc29s
dXRpb24gPSBzZWNvbmRzOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIG1fc3RvcmUtPnNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Ci19Ci0gICAgCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQotewot
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25s
eSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5m
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKLXsKLSAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Zmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCi17Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8
U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmlyc3Rd
IHsKLSAgICAgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRv
bWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsKLSAgICB9KTsKLX0KLQot
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKQotewotICAg
IC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotICAgIAotU3RyaW5n
IFJlc291cmNlTG9hZE9ic2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYgdXJsKQotewot
ICAgIHJldHVybiBwcmltYXJ5RG9tYWluKHVybC5ob3N0KCkpOwotfQotCi1TdHJpbmcgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBob3N0KQotewotICAg
IGlmIChob3N0LmlzTnVsbCgpIHx8IGhvc3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJudWxsT3JpZ2luIik7Ci0KLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNU
KQotICAgIFN0cmluZyBwcmltYXJ5RG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihob3N0KTsKLSAgICAvLyBXZSB3aWxsIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGhlcmUgaWYgdGhl
cmUgaXMgbm8gVExELiBVc2UgdGhlIGhvc3QgYXMgYSBmYWxsYmFjay4KLSAgICBpZiAoIXByaW1h
cnlEb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcHJpbWFyeURvbWFpbjsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIGhvc3Q7Ci19Ci0KIFN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICByZXR1cm4g
bV9zdG9yZSA/IG1fc3RvcmUtPnN0YXRpc3RpY3NGb3JPcmlnaW4ob3JpZ2luKSA6IGVtcHR5U3Ry
aW5nKCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggYmQ3NTkwYmJjN2I4MmNlN2YyNWZh
MGYxMzJiNWYyOGE2YmU1YThlZi4uOWEwNTQ1YzkyNjBjNzUzY2IwMTI4OWVhMDBmNmEwZDU2ODk3
ODU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgK
QEAgLTU1LDQzICs1NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5n
KGNvbnN0IEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvY3VtZW50Jik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYpOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmLCBi
b29sIHZhbHVlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzR3JhbmRmYXRoZXJlZChjb25z
dCBVUkwmKTsKLSAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwm
IHN1YnJlc291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uKFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwotICAgIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmly
ZVRlbGVtZXRyeUhhbmRsZXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlz
dGljc1N0b3JlKFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlzdGljc1F1ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIGJvb2wgc2hvdWxkTG9nKFBhZ2UqKTsKLSAgICBzdGF0aWMgU3RyaW5n
IHByaW1hcnlEb21haW4oY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFN0cmluZyBwcmltYXJ5RG9t
YWluKGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgYm9vbCBzaG91bGRMb2coUGFnZSopIGNvbnN0
OwogCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsKICAg
ICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDcyMGE5ZDFl
NTMyMjIxYzljMzQyNWQ2YjhkMjU2NTI2NzEyNGIyZDcuLjhiY2Y2MDYzOWMzYWJlMGVlOGRiOGQ4
OTc2YzE0MmM2YjI3NTQ1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTQ1Myw1ICs0NTQsMjUgQEAgV1RGOjpSZWN1cnNpdmVM
b2NrQWRhcHRlcjxMb2NrPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNz
TG9jaygpCiB7CiAgICAgcmV0dXJuIG1fc3RhdGlzdGljc0xvY2s7CiB9CisKK1N0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1cmwpCit7
CisgICAgcmV0dXJuIHByaW1hcnlEb21haW4odXJsLmhvc3QoKSk7Cit9CisKK1N0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBob3N0
KQoreworICAgIGlmIChob3N0LmlzTnVsbCgpIHx8IGhvc3QuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsT3JpZ2luIik7CisKKyNpZiBFTkFCTEUoUFVCTElDX1NV
RkZJWF9MSVNUKQorICAgIFN0cmluZyBwcmltYXJ5RG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbihob3N0KTsKKyAgICAvLyBXZSB3aWxsIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGhl
cmUgaWYgdGhlcmUgaXMgbm8gVExELiBVc2UgdGhlIGhvc3QgYXMgYSBmYWxsYmFjay4KKyAgICBp
ZiAoIXByaW1hcnlEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcHJpbWFyeURvbWFp
bjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhvc3Q7Cit9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggY2Jm
MjAzNDIxNDE2YWU0NTI4YjdkYzdkMDA2M2ZkNzE4OWRlOTAwMS4uNjFlMGQ5MDc0MGMzYjFkYjQw
YTQyMzQ3YTgzOTk3NTQ0ZjYwM2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjMsOSArNjMsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuaXNFbXB0eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5zaXplKCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
SW5NZW1vcnkoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwogCi0gICAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihjb25zdCBTdHJpbmcmLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiYpOwogCiAgICAgYm9vbCBp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpAQCAtODAsMTQgKzgwLDE0
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdyYW5kZmF0aGVyRXhpc3Rp
bmdXZWJzaXRlRGF0YUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEZpcmVUZWxlbWV0cnlDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBoYW5kbGVyKTsKIAotICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVy
KCk7Ci0gICAgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotICAgIHZvaWQgc2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5n
VGltZShTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRs
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b24oU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2ll
UGFydGl0aW9uRnJlZShTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lk
IGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29s
IGNsZWFyRmlyc3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKFdURjo6RnVuY3Rpb248dm9p
ZChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+JiYpOwogCkBAIC0xMDIsNiArMTAyLDEwIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKTsK
ICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyPExvY2s+
JiBzdGF0aXN0aWNzTG9jaygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBw
cmltYXJ5RG9tYWluKGNvbnN0IFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgcHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIGhvc3QpOworCiBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aAppbmRleCBkYWNkODRjODQ4MzkyYzcyZDAxN2EwMDljZmNmYzE3YzBlZWFkMDdkLi42OGQ2Mjg1
ZDhlM2I5MjYwMzRjYTBmMTZlZTcxMTM2ZmY4OTY2OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApA
QCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmlsZSgp
IGNvbnN0OwotICAgIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OwogICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MTVlNzFmMTJjNjQ1YzU2Y2Q5ZmNkZjM1ODMzNThkZDY5NGRmNDlmNS4uNjdkNDQ3NzZiMDVkMGFl
ZWVjNGU4MjFhZmNiZjk1MDEyYjJjMTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTMyOCw2
ICszMjgsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NM
aWZldGltZVRyYWNrZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAogICAg
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWV3
cG9ydEF0dHJpYnV0ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNv
Y29hLm1tCmluZGV4IGJlMWQ5NTQ5Mjg1NTUzOGYyZTA4MjUxNmNmZjMyY2IzYzVmNjQ2NmUuLjM1
MWU3YjFmZTcyYWE0YjE4MWM4YTU2M2YyNDUyZGFiNzBkNTIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogCiAjaW1wb3J0ICJXZWJQcmVm
ZXJlbmNlc0tleXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4K
KyNpbXBvcnQgIldlYlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC00MywxOSArNDMsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAgICAgIAogICAg
ICAgICBkb3VibGUgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uS2V5KCldOwogICAg
ICAgICBpZiAodGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+IDAgJiYgdGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbiA8PSAzMCAqIGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24o
U2Vjb25kcyB7IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gfSk7CisgICAgICAgICAgICBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIH0pOwogICAgICAg
ICAKICAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJl
bmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlS2V5KCldOwogICAgICAgICBpZiAodGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAw
ICYmIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIDw9IGRheUluU2Vjb25kcykKLSAgICAg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZSB9KTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSByZWR1Y2VkVGltZXN0YW1wUmVzb2x1
dGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktl
eTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWR1Y2VkVGltZXN0
YW1wUmVzb2x1dGlvbktleSgpXTsKLSAgICAgICAgaWYgKHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0
aW9uID4gMCAmJiByZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbiA8PSBob3VySW5TZWNvbmRzKQot
ICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0UmVk
dWNlZFRpbWVzdGFtcFJlc29sdXRpb24oU2Vjb25kcyB7IHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0
aW9uIH0pOworICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlIH0pOwogCiAgICAgICAgIGRvdWJsZSBncmFuZGZhdGhlcmlu
Z1RpbWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JL
ZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzR3JhbmRmYXRoZXJp
bmdUaW1lS2V5KCldOwogICAgICAgICBpZiAoZ3JhbmRmYXRoZXJpbmdUaW1lID4gMCAmJiBncmFu
ZGZhdGhlcmluZ1RpbWUgPD0gNyAqIGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNv
bmRzIHsgZ3JhbmRmYXRoZXJpbmdUaW1lIH0pOworICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMg
eyBncmFuZGZhdGhlcmluZ1RpbWUgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZlNjcxYWFlNzZmZjNmOTFlNDkwYzFmZGI2NWNmZjcyMzAzMTdhOTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3Bw
CkBAIC0wLDAgKzEsMjgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZE9ic2VydmVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyBpbmxpbmUgU3RyaW5nIHByaW1hcnlEb21haW4oY29uc3QgVCYgdmFsdWUpCit7CisgICAg
cmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJpbWFyeURvbWFpbih2YWx1ZSk7
Cit9CisKK1dlYlJlc291cmNlTG9hZE9ic2VydmVyJiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkT2JzZXJ2ZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcj4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CisgICAgcmV0dXJuIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9y
ZSkKK3sKKyAgICBpZiAobV9zdG9yZSAmJiBtX3F1ZXVlKQorICAgICAgICBtX3F1ZXVlID0gbnVs
bHB0cjsKKyAgICBtX3N0b3JlID0gV1RGTW92ZShzdG9yZSk7Cit9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NRdWV1ZShSZWY8V1RGOjpXb3JrUXVldWU+JiYg
cXVldWUpCit7CisgICAgQVNTRVJUKCFtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlID0gV1RGTW92ZShx
dWV1ZSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlT
dG9yZSgpCit7CisgICAgaWYgKCFtX3N0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NF
UlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgbV9z
dG9yZS0+Y2xlYXJJbk1lbW9yeSgpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCkKK3sKKyAgICBpZiAo
IW1fc3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudCgpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICAvLyBGb3Igbm93LCBiZSBj
b25zZXJ2YXRpdmUgYW5kIGNsZWFyIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBtb2RpZmllZFNp
bmNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOworICAgIGNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50U3RvcmUoKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFu
a1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCht
X3F1ZXVlKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJpbWFyeURvbWFpblN0cmlu
ZyA9IHByaW1hcnlEb21haW4odXJsKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkp
OworICAgICAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpblN0cmluZyk7CisgICAgICAg
ICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgICAgICBz
dGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygp
OworICAgICAgICB9CisKKyAgICAgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyKHsgcHJpbWFyeURvbWFpblN0cmluZyB9LCB7IH0sIGZhbHNlKTsKKyAgICB9KTsK
K30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJVc2VySW50ZXJhY3Rpb24o
Y29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0
b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVy
bCkpOworCisgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKKyAgICBz
dGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OworfQorCitib29s
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJM
JiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3Jl
LT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkp
OworCisgICAgcmV0dXJuIG1fc3RvcmUtPmhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0
aXN0aWNzKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwg
dXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0g
bV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5
RG9tYWluKHVybCkpOworCisgICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1
ZTsKK30KKworYm9vbCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBt
X3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlE
b21haW4odXJsKSk7CisKKyAgICByZXR1cm4gc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNl
OworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3Rv
cmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFp
bih1cmwpKTsKKworICAgIHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOwor
fQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0
IFVSTCYgdXJsLCBib29sIHZhbHVlKQoreworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVy
bC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgYXV0byYgc3RhdGlzdGljcyA9IG1f
c3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURv
bWFpbih1cmwpKTsKKworICAgIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCA9IHZhbHVlOworfQor
Citib29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjppc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJM
JiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3Jl
LT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkp
OworCisgICAgcmV0dXJuIHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZDsKK30KKwordm9pZCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0
IFVSTCYgc3ViZnJhbWUsIGNvbnN0IFVSTCYgdG9wRnJhbWUpCit7CisgICAgaWYgKHN1YmZyYW1l
LmlzQmxhbmtVUkwoKSB8fCBzdWJmcmFtZS5pc0VtcHR5KCkgfHwgdG9wRnJhbWUuaXNCbGFua1VS
TCgpIHx8IHRvcEZyYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KG1fcXVldWUpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVE
b21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJp
bWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNvbGF0
ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0
aXN0aWNzTG9jaygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWlu
U3RyaW5nKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
LmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2b2lkIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4o
Y29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSkKK3sKKyAgICBpZiAo
c3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8fCB0b3BG
cmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
aW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xh
dGVkQ29weSgpLCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KHN1YnJlc291cmNlKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgICAgICBhdXRvJiBzdGF0aXN0
aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihw
cmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmlu
Zyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwm
IGhvc3ROYW1lUmVkaXJlY3RlZFRvKQoreworICAgIGlmIChzdWJyZXNvdXJjZS5pc0JsYW5rVVJM
KCkgfHwgc3VicmVzb3VyY2UuaXNFbXB0eSgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRvLmlzQmxh
bmtVUkwoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJpbWFyeVJlZGlyZWN0RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihob3N0TmFtZVJlZGly
ZWN0ZWRUbykuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyA9
IHByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyk7CisgICAgICAgIHN0
YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQocHJpbWFyeVJlZGlyZWN0
RG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMpCit7CisgICAg
bV9zdG9yZS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKK30KKwordm9p
ZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZy
ZWUoU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fc3RvcmUtPnNldFRpbWVUb0xpdmVDb29raWVQ
YXJ0aXRpb25GcmVlKHNlY29uZHMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25k
cykKK3sKKyAgICBtX3N0b3JlLT5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1v
dmFsKHNlY29uZHMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fc3RvcmUtPnNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7Cisg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5
IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CisgICAgICAgIG1fc3RvcmUtPmZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQorewor
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25s
eSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10geworICAgICAgICBtX3N0b3JlLT5m
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkKK3sKKyAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20g
dGhlIG1haW4gdGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXMsIGRvbWFpbnNUb1JlbW92ZSA9IENyb3NzVGhyZWFkQ29waWVyPFZl
Y3RvcjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9SZW1vdmUpLCBkb21haW5zVG9BZGQgPSBDcm9z
c1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvQWRkKSwgY2xlYXJG
aXJzdF0geworICAgICAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRs
ZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFyRmlyc3QpOworICAgIH0pOwor
fQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlVGVsZW1ldHJ5SGFuZGxlcigp
Cit7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIG1fc3RvcmUtPmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzEwN2IyYjdiNGZiZDZiZjUyNDhh
NDg0ZWY0NmFjNjI0OWI0OTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBXb3JrUXVldWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFVSTDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyIHsKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8V2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI+OworcHVibGljOgorICAgIHN0YXRpYyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ciYgc2hhcmVkT2JzZXJ2ZXIoKTsKKworICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29y
ZTo6VVJMJik7CisKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgdmFs
dWUpOworICAgIGJvb2wgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworCisg
ICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJM
JiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7CisgICAgdm9pZCBzZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNv
dXJjZSwgY29uc3QgV2ViQ29yZTo6VVJMJiB0b3BGcmFtZSk7CisgICAgdm9pZCBzZXRTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgV2ViQ29yZTo6VVJMJiBzdWJyZXNvdXJjZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbyk7CisKKyAgICB2b2lkIHNldFRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CisgICAgdm9pZCBzZXRUaW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lQmV0
d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmluZ1RpbWUoU2Vjb25kcyk7CisKKyAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cigpOworICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7CisgICAg
dm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwg
Ym9vbCBjbGVhckZpcnN0KTsKKyAgICB2b2lkIGZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7CisKKyAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiYmKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NRdWV1ZShSZWY8V1RGOjpXb3Jr
UXVldWU+JiYpOworICAgIHZvaWQgY2xlYXJJbk1lbW9yeVN0b3JlKCk7CisgICAgdm9pZCBjbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CisgICAgdm9pZCBjbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9k
aWZpZWRTaW5jZSk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IG1f
cXVldWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIu
Y3BwCmluZGV4IDE1MGIzODc5OTRlOGZhMzFiMzMyYmI5OTkwYTkwNWUwZDg2MGY1MDEuLjI4OTRh
OGMyMjFkMWVhZTYyODEyOGM4OTYxMjM4YWQ4MjU3NWUzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9VUkwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zOCw5
NSArMzgsOTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIGhvc3ROYW1l
LCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0UHJldmFsZW50UmVzb3VyY2UoVVJM
KFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkT2JzZXJ2ZXIoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3ROYW1lKSk7
CiAgICAgZWxzZQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
T2JzZXJ2ZXIoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsK
KyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9CiAKIGJvb2wgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiBob3N0TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3RO
YW1lKSk7CisgICAgcmV0dXJuIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZl
cigpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0TmFtZSkpOwogfQogICAgIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0SGFzSGFkVXNlckludGVy
YWN0aW9uKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlKQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2
ZXIoKS5sb2dVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5sb2dVc2VySW50ZXJhY3Rp
b24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOwogICAgIGVsc2UKLSAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJVc2VySW50ZXJhY3Rpb24o
VVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1l
KSk7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5oYXNIYWRVc2VySW50
ZXJhY3Rpb24oVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgIHJldHVybiBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVS
TCgpLCBob3N0TmFtZSkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
CiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCku
c2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSwgdmFsdWUpOworICAgIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldEdyYW5kZmF0aGVyZWQoVVJM
KFVSTCgpLCBob3N0TmFtZSksIHZhbHVlKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6aXNHcmFuZGZhdGhlcmVkKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZl
cigpLmlzR3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSk7CisgICAgcmV0dXJuIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmlzR3JhbmRmYXRoZXJlZChV
UkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBTdHJpbmcmIGhv
c3ROYW1lLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lSG9zdE5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgaG9zdE5hbWUpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9z
dE5hbWUpKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5z
ZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBob3N0TmFtZSksIFVSTChV
UkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgU3Ry
aW5nJiBob3N0TmFtZSwgY29uc3QgU3RyaW5nJiB0b3BGcmFtZUhvc3ROYW1lKQogewotICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihVUkwoVVJMKCksIGhvc3ROYW1lKSwgVVJMKFVSTCgpLCB0
b3BGcmFtZUhvc3ROYW1lKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9i
c2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwoKSwgaG9z
dE5hbWUpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKIH0KIAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluZyYgaG9zdE5hbWVSZWRpcmVjdGVk
VG8pCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVy
KCkuc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgaG9zdE5hbWUpLCBV
UkwoVVJMKCksIGhvc3ROYW1lUmVkaXJlY3RlZFRvKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVS
TChVUkwoKSwgaG9zdE5hbWUpLCBVUkwoVVJMKCksIGhvc3ROYW1lUmVkaXJlY3RlZFRvKSk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQogewotICAgIFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b24oc2Vjb25kcyk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVy
KCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUoU2Vjb25kcyBzZWNvbmRzKQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNl
Y29uZHMpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNl
dFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKHNlY29uZHMpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpLnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vj
b25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdy
YW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNl
Y29uZHMpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNl
dEdyYW5kZmF0aGVyaW5nVGltZShzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKIHsKLSAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlRGF0YU1v
ZGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
T2JzZXJ2ZXIoKS5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
cjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9tYWluKGNvbnN0IFN0
cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlKQotICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCB7aG9zdE5hbWV9LCBmYWxzZSk7CisgICAgICAg
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHtob3N0TmFtZX0sIGZhbHNlKTsKICAgICBlbHNlCi0g
ICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7aG9zdE5hbWV9LCB7IH0sIGZhbHNlKTsK
KyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHtob3N0TmFtZX0sIHsgfSwgZmFsc2UpOwogfQog
CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlVGVsZW1ldHJ5SGFu
ZGxlcigpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwogfQogICAgIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlKQpAQCAtMTQ2LDI0ICsxNDYsMjQgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNv
dXJjZXNCZWZvcmVEYXRhUmVjb3IKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCiB7Ci0gICAgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZSgpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNl
cnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZU1vZGlmaWVkU2luY2VIb3Vycyh1bnNpZ25lZCBob3VycykKIHsKLSAgICBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0gc3RkOjpjaHJv
bm86OmhvdXJzKGhvdXJzKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9i
c2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjpub3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3VycykpOwogfQogICAgIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6cmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSgpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbigyNF9oICogMzAuKTsKLSAgICBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZl
Q29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNS
ZW1vdmFsKDFfaCk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9i
c2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CisgICAgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbigy
NF9oICogMzAuKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5zZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSgyNF9oKTsKKyAgICBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0
YVJlY29yZHNSZW1vdmFsKDFfaCk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKDFfaCk7CiAgICAgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGZhbHNlKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpzZXRO
b3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChmYWxzZSk7CiAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbCh0cnVlKTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5U3RvcmUoKTsKKyAgICBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5U3RvcmUoKTsKIH0K
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBk
MjE4NzBkYTQ0NmY3YjhmMTcxYTVmM2FjZTM5NTM5MTZiNWFmMTBiLi5mN2E2ZmU4NzYzYjFhYTc4
ZmExOGExOTAzZDJjNGU3YjcxMWI1ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgpAQCAtMzcs
NyArMzgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZU1vbml0b3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yMDQsOCArMjA0LDggQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
Ci0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGlj
c1N0b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNvcHlSZWYoKSk7Ci0gICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1F1ZXVlKG1f
c3RhdGlzdGljc1F1ZXVlLmNvcHlSZWYoKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1N0b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNvcHlSZWYoKSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1F1ZXVlKG1fc3RhdGlzdGljc1F1ZXVlLmNvcHlSZWYo
KSk7CiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnNldE5vdGlmaWNhdGlvbkNh
bGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAg
aWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggZTZiYWNiZjRhYTFhOWZhMmMzNGUwNTc5
ZGQwMjNhNjM2YWExODczMi4uMDgzYzc0ZjgxNzYwNmU4ZTIxODZlOTMwN2UwMWViMDU1YmY2MWUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCkBAIC00Myw3ICs0NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRP
YnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVh
ZENvcGllci5oPgpAQCAtODE2LDcgKzgxNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyCiAj
ZW5kaWYKIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSkKLSAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShtb2Rp
ZmllZFNpbmNlKTsKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShtb2RpZmllZFNpbmNlKTsKIAog
ICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBwZW5kaW5nIGNh
bGxiYWNrcy4gSWYgc28sIHdlIHdhbnQgdG8gZGlzcGF0Y2ggdGhlIGNvbXBsZXRpb24gaGFuZGxl
ciByaWdodCBhd2F5LgogICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CkBA
IC0xMDg1LDcgKzEwODUsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogI2VuZGlmCiAKICAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcykpCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKKyAgICAgICAgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZSgpOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0
IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0
aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5jYWxsSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjNzVkYzc4YjBiMGM2MWY5YTJiOGQ5NDgzOGUwM2QxZjll
YWVhOGY2Li5jYmYyZTI4ZDI1NDBiZmYwNTNhNDk3NTIwZGQyYTEzZTljN2M0YzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MDIsNiArOTAyLDggQEAKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jl
c29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJ
NDFGQUY1RjkxRTNDMTAyNTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY3MUUzQzBCNDcw
MDFBRTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5jcHAgKi87IH07CiAJCTQ0NTBBRUMwMURDM0ZB
RTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hh
cmVkTWVtb3J5Q29jb2EuY3BwICovOyB9OworCQk0NjM0M0IzQTFGMDU5OTIzMDAwM0YzMDkgLyog
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY0NkFCMzIxRjA1OThENDAwOUQwN0ZDIC8qIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcCAqLzsgfTsKKwkJNDYzNDNCM0IxRjA1OTkyNjAwMDNGMzA5IC8qIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjQ2QUIzMzFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDYzRkQ0ODAxRUI5NDU5NjAwQTI5ODJDIC8qIFdLUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRp
b25SZWFzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ4
MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IH07CiAJ
CTQ2NTI1MEU2MUVDRjUyREMwMDIwMjVDQiAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1MjUwRTUxRUNG
NTJDRDAwMjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi87IH07CkBAIC0zMTQz
LDYgKzMxNDUsOCBAQAogCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2hhcmVkTWVt
b3J5Q29jb2EuY3BwOyBwYXRoID0gY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ3RjFFQjk0NTg0MDBBMjk4MkMgLyogV0tQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzVGVybWluYXRpb25SZWFz
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY0NkFCMzIxRjA1OThENDAwOUQw
N0ZDIC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDY0NkFCMzMxRjA1OThENDAwOUQwN0ZDIC8qIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291
cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NTI1MEU1
MUVDRjUyQ0QwMDIwMjVDQiAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8q
IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNzFFNTY3NUEyMDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg1OSw2ICs2ODYzLDggQEAK
IAkJCQlCQzExMUIwRDExMkY1RTRGMDAzMzdCQUIgLyogV2ViUHJvY2Vzc1Byb3h5LmNwcCAqLywK
IAkJCQlCQzAzMkRDRjEwRjQzODlGMDA1OEMxNUEgLyogV2ViUHJvY2Vzc1Byb3h5LmggKi8sCiAJ
CQkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biAqLywKKwkJCQk0NjQ2QUIzMjFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwICovLAorCQkJCTQ2NDZBQjMzMUYwNTk4RDQwMDlEMDdGQyAvKiBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5oICovLAogCQkJCTZCRTk2OUExMUU0M0I4QTQwMDhCNzQ4MyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAgKi8sCiAJCQkJNkJFOTY5OUYxRTQzQjg2
RTAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmggKi8sCiAJCQkJ
N0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgKi8sCkBAIC04NTY4LDYgKzg1NzQsNyBAQAogCQkJCTBGNTk0N0E4MTg3QjUxNzYwMDQz
Nzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3QTQxODdCM0I3RDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2MzQzQjNCMUYwNTk5MjYwMDAzRjMwOSAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUQxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODFGMUJBMjVCMjcwMDdD
RDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1
QkE4MjUxQkEyNUNGQjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtMTAyODQsNiArMTAyOTEsNyBAQAogCQkJCUMwMzM3REFFMTI3
QTI0RkUwMDhGRjRGNCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAzMkRC
QTEwRjQzODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMTExQjVFMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3RvcnkubW0gaW4g
U291cmNlcyAqLywKKwkJCQk0NjM0M0IzQTFGMDU5OTIzMDAwM0YzMDkgLyogV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTMxMjE0RTZDQjAwMEI5
OEVCIC8qIFdlYkZvcm1DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTUxMjE0
RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzExMUFERDExMkY1QjkzMDAzMzdCQUIgLyogV2ViRnJhbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314177</attachid>
            <date>2017-06-29 15:09:50 -0700</date>
            <delta_ts>2017-06-29 16:12:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173990-20170629150949.patch</filename>
            <type>text/plain</type>
            <size>58647</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQwNmFiMGQ1Y2M1MGJh
N2ExYTE2YTUzZTQ2ZmVjY2FkM2UyOWU1MS4uNWVmODc1YWQ3N2Y0NDlkOTc5OWMzODlhMDEwYWY5
YTdlZDNkMDA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE3LTA2LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgU3BsaXQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIgaW50byAyIGNsYXNzZXM6IG9uZSBmb3IgV2ViQ29yZSBhbmQgb25lIGZvciB0aGUg
VUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTcGxpdCBSZXNvdXJjZUxvYWRPYnNlcnZlciBpbnRvIDIgY2xhc3Nlczogb25lIGZvciBXZWJD
b3JlIGFuZCBvbmUgZm9yIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoZXkgcmVhbGx5IGhhdmUg
ZGlmZmVyZW50IEFQSSBhbmQgdGhlcmUgaXMgdGhlcmVmb3JlIGNsb3NlIHRvIG5vIGNvZGUgZHVw
bGljYXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeURvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaG91bGRMb2cpOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpwcmltYXJ5RG9tYWluKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisKKzIwMTctMDYtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjE4OTQ0LgogCiAgICAgICAgIE9wdGltaXphdGlvbiBpcyBpbmNvcnJlY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA3MjhkMjYzMTU4ZGE2ZTc1MmZhYjg2NWM0YjRiZjU4ZTdmOWY0OTgyLi4zYmVl
Zjc3ODQwZTI5MmFhM2EwYTMwYjAxNDUyYzE1N2FmYjdmNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNzEgQEAKIDIwMTctMDYtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAor
ICAgICAgICBTcGxpdCBSZXNvdXJjZUxvYWRPYnNlcnZlciBpbnRvIDIgY2xhc3Nlczogb25lIGZv
ciBXZWJDb3JlIGFuZCBvbmUgZm9yIHRoZSBVSVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mzk5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IFJlc291cmNlTG9hZE9ic2VydmVyIGlu
dG8gMiBjbGFzc2VzOiBvbmUgZm9yIFdlYkNvcmUgYW5kIG9uZSBmb3IgdGhlIFVJUHJvY2Vzcy4K
KyAgICAgICAgVGhleSByZWFsbHkgaGF2ZSBkaWZmZXJlbnQgQVBJIGFuZCB0aGVyZSBpcyB0aGVy
ZWZvcmUgY2xvc2UgdG8gbm8gY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OnByaW1hcnlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NRdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhckluTWVtb3J5U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dV
c2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6Y2xlYXJVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
ZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omlz
R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldE1pbmltdW1UaW1l
QmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2Vy
OjpzZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXI6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0TWluaW11bVRpbWVC
ZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZURhdGFNb2RpZmlj
YXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRT
aW5jZUhvdXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDE3LTA2LTI5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgU2xpZ2h0IGNsZWFuIHVw
IG9mIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczOTc2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDRmNWE3YjM3ZTI0YzUwMzg2NGQ4
MWU1NDkyYTgwOWJiNmY2MWNlYzQuLjc1NTUwNGYyYjI4NTFlOGVmMWQ4NDkzYzNlNzk3YzgzZTNj
ODQ3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmNwcApAQCAtMzAsMjUgKzMwLDIzIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVkZSAiTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgotI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgotI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURvbWFpbihjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsK
K30KKwogc3RhdGljIFNlY29uZHMgdGltZXN0YW1wUmVzb2x1dGlvbiB7IDFfaCB9OwogCiBSZXNv
dXJjZUxvYWRPYnNlcnZlciYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkK
QEAgLTY5LDQyICs2NywxMyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0
aWNzUXVldWUoUmVmPFdURjo6V29ya1F1ZXVlPiYmIHF1ZXVlKQogICAgIEFTU0VSVCghbV9xdWV1
ZSk7CiAgICAgbV9xdWV1ZSA9IFdURk1vdmUocXVldWUpOwogfQotICAgIAotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwot
ICAgIH0pOwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQotewotICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIg
ZXZlcnl0aGluZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UKLSAgICBVTlVTRURfUEFSQU0o
bW9kaWZpZWRTaW5jZSk7Ci0gICAgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwot
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+
PSAzMDAgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKLWJvb2wgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3VsZExvZyhQYWdlKiBwYWdlKQorYm9vbCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBhZ2UqIHBhZ2UpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IEVyciBvbiB0aGUgc2FmZSBzaWRlIHVudGlsIHdlIGhhdmUgc29ydGVkIG91dCB3aGF0IHRvIGRv
IGluIHdvcmtlciBjb250ZXh0cwogICAgIGlmICghcGFnZSkKQEAgLTM2OCwyMjQgKzMzNyw5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2Vk
VGltZVJlc29sdXRpb24oY29uc3QgRG9jCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAo
dXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlE
b21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAg
ICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NM
b2NrKCkpOwotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluU3RyaW5nKTsKLSAgICAg
ICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aXN0
aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsgfSwgZmFsc2UpOwotICAgIH0p
OwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclVzZXJJbnRlcmFjdGlvbihj
b25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3Rv
cmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5l
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJs
KSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLSAg
ICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OwotfQotCi1i
b29sIFJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJM
JiB1cmwpCi17Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3Jl
LT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5z
dXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkp
OwotICAgIAotICAgIHJldHVybiBtX3N0b3JlLT5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24o
c3RhdGlzdGljcyk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8
IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9
IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eURvbWFpbih1cmwpKTsKLSAgICAKLSAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2Ug
PSB0cnVlOwotfQotCi1ib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjppc1ByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYgdXJsKQotewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9
IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eURvbWFpbih1cmwpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGlzdGljcy5pc1ByZXZhbGVudFJl
c291cmNlOwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJQcmV2YWxl
bnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8
fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNl
ID0gZmFsc2U7Ci19Ci0gICAgCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFuZGZh
dGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBib29sIHZhbHVlKQotewotICAgIGlmICh1cmwuaXNCbGFu
a1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5ncmFuZGZh
dGhlcmVkID0gdmFsdWU7Ci19Ci0gICAgCi1ib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjppc0dy
YW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkg
fHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYg
c3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGlzdGljcy5n
cmFuZGZhdGhlcmVkOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSkKLXsKLSAgICBpZiAoc3ViZnJhbWUuaXNCbGFua1VSTCgpIHx8IHN1YmZyYW1lLmlzRW1w
dHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0g
cHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0
byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGlj
cy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5T
dHJpbmcpOwotICAgIH0pOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
VVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1
YnJlc291cmNlLmlzRW1wdHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwot
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcg
PSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291
cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5
KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNz
TG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3Ry
aW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5z
LmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwotICAgIH0pOwotfQotCi12b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3Qg
VVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKLXsKLSAg
ICBpZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8
fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5pc0JsYW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVk
VG8uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUp
OwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5UmVkaXJlY3REb21haW5TdHJp
bmcgPSBwcmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwg
cHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJj
ZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0
b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3Rv
cmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJl
c291cmNlRG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcpOwotICAgIH0pOwot
fQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgc2Vjb25kcykKLXsKLSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKHNlY29uZHMpOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgbV9z
dG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1l
QmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Ci19Ci0gICAgCi12b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRSZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbihTZWNvbmRzIHNl
Y29uZHMpCi17Ci0gICAgaWYgKHNlY29uZHMgPiAwX3MpCi0gICAgICAgIHRpbWVzdGFtcFJlc29s
dXRpb24gPSBzZWNvbmRzOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRzKQotewotICAgIG1fc3RvcmUtPnNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Ci19Ci0gICAgCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQotewot
ICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25s
eSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5m
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKLXsKLSAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+Zmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpCi17Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8
U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmlyc3Rd
IHsKLSAgICAgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRv
bWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBjbGVhckZpcnN0KTsKLSAgICB9KTsKLX0KLQot
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKQotewotICAg
IC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBtX3N0b3JlLT5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotfQotICAgIAotU3RyaW5n
IFJlc291cmNlTG9hZE9ic2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYgdXJsKQotewot
ICAgIHJldHVybiBwcmltYXJ5RG9tYWluKHVybC5ob3N0KCkpOwotfQotCi1TdHJpbmcgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBob3N0KQotewotICAg
IGlmIChob3N0LmlzTnVsbCgpIHx8IGhvc3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJudWxsT3JpZ2luIik7Ci0KLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNU
KQotICAgIFN0cmluZyBwcmltYXJ5RG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bihob3N0KTsKLSAgICAvLyBXZSB3aWxsIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGhlcmUgaWYgdGhl
cmUgaXMgbm8gVExELiBVc2UgdGhlIGhvc3QgYXMgYSBmYWxsYmFjay4KLSAgICBpZiAoIXByaW1h
cnlEb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcHJpbWFyeURvbWFpbjsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIGhvc3Q7Ci19Ci0KIFN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICByZXR1cm4g
bV9zdG9yZSA/IG1fc3RvcmUtPnN0YXRpc3RpY3NGb3JPcmlnaW4ob3JpZ2luKSA6IGVtcHR5U3Ry
aW5nKCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggYmQ3NTkwYmJjN2I4MmNlN2YyNWZh
MGYxMzJiNWYyOGE2YmU1YThlZi4uOWEwNTQ1YzkyNjBjNzUzY2IwMTI4OWVhMDBmNmEwZDU2ODk3
ODU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgK
QEAgLTU1LDQzICs1NSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5n
KGNvbnN0IEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb25X
aXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvY3VtZW50Jik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYpOwotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmLCBi
b29sIHZhbHVlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzR3JhbmRmYXRoZXJlZChjb25z
dCBVUkwmKTsKLSAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdp
bihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwm
IHN1YnJlc291cmNlLCBjb25zdCBVUkwmIGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uKFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwotICAgIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmly
ZVRlbGVtZXRyeUhhbmRsZXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlz
dGljc1N0b3JlKFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlzdGljc1F1ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwog
CiBwcml2YXRlOgotICAgIGJvb2wgc2hvdWxkTG9nKFBhZ2UqKTsKLSAgICBzdGF0aWMgU3RyaW5n
IHByaW1hcnlEb21haW4oY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFN0cmluZyBwcmltYXJ5RG9t
YWluKGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgYm9vbCBzaG91bGRMb2coUGFnZSopIGNvbnN0
OwogCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsKICAg
ICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDcyMGE5ZDFl
NTMyMjIxYzljMzQyNWQ2YjhkMjU2NTI2NzEyNGIyZDcuLjhiY2Y2MDYzOWMzYWJlMGVlOGRiOGQ4
OTc2YzE0MmM2YjI3NTQ1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTQ1Myw1ICs0NTQsMjUgQEAgV1RGOjpSZWN1cnNpdmVM
b2NrQWRhcHRlcjxMb2NrPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNz
TG9jaygpCiB7CiAgICAgcmV0dXJuIG1fc3RhdGlzdGljc0xvY2s7CiB9CisKK1N0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1cmwpCit7
CisgICAgcmV0dXJuIHByaW1hcnlEb21haW4odXJsLmhvc3QoKSk7Cit9CisKK1N0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBob3N0
KQoreworICAgIGlmIChob3N0LmlzTnVsbCgpIHx8IGhvc3QuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsT3JpZ2luIik7CisKKyNpZiBFTkFCTEUoUFVCTElDX1NV
RkZJWF9MSVNUKQorICAgIFN0cmluZyBwcmltYXJ5RG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbihob3N0KTsKKyAgICAvLyBXZSB3aWxsIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGhl
cmUgaWYgdGhlcmUgaXMgbm8gVExELiBVc2UgdGhlIGhvc3QgYXMgYSBmYWxsYmFjay4KKyAgICBp
ZiAoIXByaW1hcnlEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcHJpbWFyeURvbWFp
bjsKKyNlbmRpZgorCisgICAgcmV0dXJuIGhvc3Q7Cit9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggY2Jm
MjAzNDIxNDE2YWU0NTI4YjdkYzdkMDA2M2ZkNzE4OWRlOTAwMS4uNjFlMGQ5MDc0MGMzYjFkYjQw
YTQyMzQ3YTgzOTk3NTQ0ZjYwM2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjMsOSArNjMsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuaXNFbXB0eSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5zaXplKCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
SW5NZW1vcnkoKTsKLSAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwogCi0gICAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihjb25zdCBTdHJpbmcmLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiYpOwogCiAgICAgYm9vbCBp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpAQCAtODAsMTQgKzgwLDE0
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdyYW5kZmF0aGVyRXhpc3Rp
bmdXZWJzaXRlRGF0YUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEZpcmVUZWxlbWV0cnlDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBoYW5kbGVyKTsKIAotICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVy
KCk7Ci0gICAgdm9pZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotICAgIHZvaWQgc2V0VGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5n
VGltZShTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0
aW9uSGFuZGxlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRs
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b24oU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2ll
UGFydGl0aW9uRnJlZShTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lk
IGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29s
IGNsZWFyRmlyc3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKFdURjo6RnVuY3Rpb248dm9p
ZChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik+JiYpOwogCkBAIC0xMDIsNiArMTAyLDEwIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKTsK
ICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyPExvY2s+
JiBzdGF0aXN0aWNzTG9jaygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBw
cmltYXJ5RG9tYWluKGNvbnN0IFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgcHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIGhvc3QpOworCiBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aAppbmRleCBkYWNkODRjODQ4MzkyYzcyZDAxN2EwMDljZmNmYzE3YzBlZWFkMDdkLi42OGQ2Mjg1
ZDhlM2I5MjYwMzRjYTBmMTZlZTcxMTM2ZmY4OTY2OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApA
QCAtMTM1LDcgKzEzNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmlsZSgp
IGNvbnN0OwotICAgIGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OwogICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2Fubm90QmVBQmFzZVVSTDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MTVlNzFmMTJjNjQ1YzU2Y2Q5ZmNkZjM1ODMzNThkZDY5NGRmNDlmNS4uNjdkNDQ3NzZiMDVkMGFl
ZWVjNGU4MjFhZmNiZjk1MDEyYjJjMTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTMyOCw2
ICszMjgsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NM
aWZldGltZVRyYWNrZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAogICAg
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWV3
cG9ydEF0dHJpYnV0ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNv
Y29hLm1tCmluZGV4IGJlMWQ5NTQ5Mjg1NTUzOGYyZTA4MjUxNmNmZjMyY2IzYzVmNjQ2NmUuLjM1
MWU3YjFmZTcyYWE0YjE4MWM4YTU2M2YyNDUyZGFiNzBkNTIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0
ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogCiAjaW1wb3J0ICJXZWJQcmVm
ZXJlbmNlc0tleXMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4K
KyNpbXBvcnQgIldlYlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC00MywxOSArNDMsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAgICAgIAogICAg
ICAgICBkb3VibGUgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uS2V5KCldOwogICAg
ICAgICBpZiAodGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+IDAgJiYgdGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbiA8PSAzMCAqIGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24o
U2Vjb25kcyB7IHRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gfSk7CisgICAgICAgICAgICBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uKFNlY29uZHMgeyB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIH0pOwogICAgICAg
ICAKICAgICAgICAgZG91YmxlIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJl
bmNlc0tleTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlS2V5KCldOwogICAgICAgICBpZiAodGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAw
ICYmIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIDw9IGRheUluU2Vjb25kcykKLSAgICAg
ICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgeyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZSB9KTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSByZWR1Y2VkVGltZXN0YW1wUmVzb2x1
dGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktl
eTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWR1Y2VkVGltZXN0
YW1wUmVzb2x1dGlvbktleSgpXTsKLSAgICAgICAgaWYgKHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0
aW9uID4gMCAmJiByZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbiA8PSBob3VySW5TZWNvbmRzKQot
ICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0UmVk
dWNlZFRpbWVzdGFtcFJlc29sdXRpb24oU2Vjb25kcyB7IHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0
aW9uIH0pOworICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlIH0pOwogCiAgICAgICAgIGRvdWJsZSBncmFuZGZhdGhlcmlu
Z1RpbWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JL
ZXk6IFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzR3JhbmRmYXRoZXJp
bmdUaW1lS2V5KCldOwogICAgICAgICBpZiAoZ3JhbmRmYXRoZXJpbmdUaW1lID4gMCAmJiBncmFu
ZGZhdGhlcmluZ1RpbWUgPD0gNyAqIGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNv
bmRzIHsgZ3JhbmRmYXRoZXJpbmdUaW1lIH0pOworICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMg
eyBncmFuZGZhdGhlcmluZ1RpbWUgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkyNmYwMWMxYjk1YTI2OTQzZjJiMmQ5MzllY2Q5MDlhYWMwYmVjMzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3Bw
CkBAIC0wLDAgKzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZE9ic2VydmVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Cisj
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURvbWFp
bihjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKK30KKworV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIm
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdlYlJlc291cmNlTG9hZE9ic2VydmVyPiBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjsKKyAgICByZXR1cm4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI7Cit9CisKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiYmIHN0b3JlKQoreworICAgIGlmIChtX3N0b3JlICYmIG1fcXVl
dWUpCisgICAgICAgIG1fcXVldWUgPSBudWxscHRyOworICAgIG1fc3RvcmUgPSBXVEZNb3ZlKHN0
b3JlKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1F1
ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQoIW1fcXVldWUp
OworICAgIG1fcXVldWUgPSBXVEZNb3ZlKHF1ZXVlKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeVN0b3JlKCkKK3sKKyAgICBpZiAoIW1fc3RvcmUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpc10geworICAgICAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5KCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmUoKQoreworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKG1fcXVldWUpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CisgICAg
ICAgIG1fc3RvcmUtPmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50
U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
KQoreworICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGlu
ZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRT
aW5jZSk7CisgICAgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOworfQorCit2b2lk
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1
cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcXVldWUpOworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcmltYXJ5RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih1cmwpLmlzb2xhdGVk
Q29weSgpXSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5RG9tYWluU3RyaW5nKTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7CisgICAgICAgIH0KKworICAgICAgICBtX3N0b3Jl
LT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyBwcmltYXJ5RG9tYWluU3RyaW5n
IH0sIHsgfSwgZmFsc2UpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJs
LmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICBzdGF0aXN0aWNzLmhhZFVzZXJJ
bnRlcmFjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUgPSB7IH07Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hh
ZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtV
UkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICByZXR1cm4gbV9zdG9yZS0+aGFzSGFk
UmVjZW50VXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3MpOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKK3sKKyAg
ICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkp
OworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICBzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworfQorCitib29sIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1
cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7
CisgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKworICAgIHJldHVybiBzdGF0
aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYg
KHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKKyAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworCisgICAgc3RhdGlzdGljcy5pc1By
ZXZhbGVudFJlc291cmNlID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUpCit7CisgICAg
aWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsK
KyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworCisgICAgc3RhdGlzdGljcy5n
cmFuZGZhdGhlcmVkID0gdmFsdWU7Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtV
UkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICByZXR1cm4gc3RhdGlzdGljcy5ncmFu
ZGZhdGhlcmVkOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BG
cmFtZSkKK3sKKyAgICBpZiAoc3ViZnJhbWUuaXNCbGFua1VSTCgpIHx8IHN1YmZyYW1lLmlzRW1w
dHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odG9w
RnJhbWUpLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5U3ViRnJhbWVEb21haW5TdHJpbmcgPSBwcmlt
YXJ5RG9tYWluKHN1YmZyYW1lKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgICAgICBhdXRvJiBz
dGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5U3ViRnJhbWVEb21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLnN1
YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmlu
Zyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBV
UkwmIHRvcEZyYW1lKQoreworICAgIGlmIChzdWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3Vi
cmVzb3VyY2UuaXNFbXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nID0gcHJp
bWFyeURvbWFpbih0b3BGcmFtZSkuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURv
bWFpblN0cmluZyA9IHByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2so
KSk7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyk7
CisgICAgICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQo
cHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVS
TCYgc3VicmVzb3VyY2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCit7CisgICAg
aWYgKHN1YnJlc291cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5pc0VtcHR5KCkgfHwg
aG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNCbGFua1VSTCgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRv
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcXVldWUpOworICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcgPSBw
cmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwgcHJpbWFy
eVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNv
bGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5z
dGF0aXN0aWNzTG9jaygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNl
RG9tYWluU3RyaW5nKTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgc2Vjb25kcykKK3sKKyAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKHNlY29uZHMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9z
dG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7Cit9CisKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVj
b3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fc3RvcmUtPnNldE1pbmltdW1U
aW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMp
Cit7CisgICAgbV9zdG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3Zh
bChzZWNvbmRzKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZURhdGFN
b2RpZmljYXRpb25IYW5kbGVyKCkKK3sKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0
ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LgorICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXNdIHsKKyAgICAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcigpCit7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQg
YnkgdGVzdGluZyBzeXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzXSB7CisgICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVz
SGFuZGxlcigpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBj
bGVhckZpcnN0KQoreworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lz
dGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgZG9t
YWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRv
bWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxT
dHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7CisgICAgICAgIG1fc3Rv
cmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRv
bWFpbnNUb0FkZCwgY2xlYXJGaXJzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKK3sKKyAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20g
dGhlIG1haW4gdGhyZWFkLgorICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9z
dG9yZS0+ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVjMTA3YjJiN2I0ZmJkNmJmNTI0OGE0ODRlZjQ2YWM2MjQ5YjQ5NmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdv
cmtRdWV1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgeworICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcj47CitwdWJs
aWM6CisgICAgc3RhdGljIFdlYlJlc291cmNlTG9hZE9ic2VydmVyJiBzaGFyZWRPYnNlcnZlcigp
OworCisgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7Cisg
ICAgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKworICAgIHZv
aWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgY2xlYXJQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHNldEdyYW5k
ZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCB2YWx1ZSk7CisgICAgYm9vbCBpc0dy
YW5kZmF0aGVyZWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisKKyAgICB2b2lkIHNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhjb25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhv
c3ROYW1lUmVkaXJlY3RlZFRvKTsKKworICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbihTZWNvbmRzKTsKKyAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KFNlY29uZHMpOworICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVt
b3ZhbChTZWNvbmRzKTsKKyAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsK
KworICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgdm9pZCBmaXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICB2b2lkIGZpcmVTaG91bGRQYXJ0
aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3Zl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOwor
ICAgIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKKworICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1N0b3JlKFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOworICAg
IHZvaWQgc2V0U3RhdGlzdGljc1F1ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJik7CisgICAgdm9p
ZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmUoKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKworcHJp
dmF0ZToKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBt
X3N0b3JlOworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKaW5kZXggMTUwYjM4Nzk5
NGU4ZmEzMWIzMzJiYjk5OTBhOTA1ZTBkODYwZjUwMS4uMjg5NGE4YzIyMWQxZWFlNjI4MTI4Yzg5
NjEyMzhhZDgyNTc1ZTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCkBAIC0yNyw4ICsy
Nyw4IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5o
IgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM4LDk1ICszOCw5NSBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlKQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkT2JzZXJ2ZXIoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3ROYW1lKSk7
CisgICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFBy
ZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKICAgICBlbHNlCi0gICAgICAg
IFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVS
TChVUkwoKSwgaG9zdE5hbWUpKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKKyAgICByZXR1cm4g
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNQcmV2YWxlbnRSZXNv
dXJjZShVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5n
JiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIFdlYkNv
cmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmxvZ1VzZXJJbnRlcmFj
dGlvbihVUkwoVVJMKCksIGhvc3ROYW1lKSk7CisgICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWRPYnNlcnZlcigpLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3RO
YW1lKSk7CiAgICAgZWxzZQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1l
KSk7CisgICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNs
ZWFyVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKIH0KIAogYm9vbCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0
IFN0cmluZyYgaG9zdE5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCks
IGhvc3ROYW1lKSk7CisgICAgcmV0dXJuIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVy
ZWQoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRHcmFuZGZhdGhlcmVkKFVS
TChVUkwoKSwgaG9zdE5hbWUpLCB2YWx1ZSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSwg
dmFsdWUpOwogfQogCiBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjppc0dy
YW5kZmF0aGVyZWQoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNHcmFuZGZhdGhlcmVk
KFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKKyAgICByZXR1cm4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdE5hbWUp
KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmlu
ZyYgdG9wRnJhbWVIb3N0TmFtZSkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVS
TCgpLCBob3N0TmFtZSksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworICAgIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihVUkwoVVJMKCksIGhvc3ROYW1lKSwgVVJMKFVSTCgpLCB0b3BGcmFtZUhvc3RO
YW1lKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBjb25z
dCBTdHJpbmcmIHRvcEZyYW1lSG9zdE5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKFVSTChVUkwoKSwgaG9zdE5hbWUpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsK
KyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBob3N0TmFtZSksIFVSTChVUkwoKSwg
dG9wRnJhbWVIb3N0TmFtZSkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgU3RyaW5nJiBob3N0
TmFtZSwgY29uc3QgU3RyaW5nJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKIHsKLSAgICBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBob3N0TmFtZSksIFVSTChVUkwoKSwgaG9zdE5hbWVS
ZWRpcmVjdGVkVG8pKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2
ZXIoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBob3N0TmFtZSks
IFVSTChVUkwoKSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8pKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNv
bmRzIHNlY29uZHMpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKKyAgICBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNl
ckludGVyYWN0aW9uKHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29u
ZHMpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVy
KCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7CisgICAgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBh
cnRpdGlvbkZyZWUoc2Vjb25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyBzZWNvbmRzKQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25k
cyk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0TWlu
aW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNl
Y29uZHMgc2Vjb25kcykKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkT2JzZXJ2ZXIoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcyk7CisgICAgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1l
KHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpm
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigp
OworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVEYXRh
TW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQogewotICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcigpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwogfQog
CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXJGb3JPbmVEb21haW4oY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFu
ZGxlcih7IH0sIHtob3N0TmFtZX0sIGZhbHNlKTsKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KHsgfSwge2hvc3ROYW1lfSwgZmFsc2UpOwogICAgIGVsc2UKLSAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNv
b2tpZXNIYW5kbGVyKHtob3N0TmFtZX0sIHsgfSwgZmFsc2UpOworICAgICAgICBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2ll
c0hhbmRsZXIoe2hvc3ROYW1lfSwgeyB9LCBmYWxzZSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXI6OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKIHsKLSAgICBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlVGVsZW1ldHJ5
SGFuZGxlcigpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigp
LmZpcmVUZWxlbWV0cnlIYW5kbGVyKCk7CiB9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KGJvb2wgdmFsdWUpCkBAIC0xNDYsMjQgKzE0NiwyNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cgogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlKCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7Cisg
ICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhv
dXJzKHVuc2lnbmVkIGhvdXJzKQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWRPYnNlcnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsK
KyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0g
c3RkOjpjaHJvbm86OmhvdXJzKGhvdXJzKSk7CiB9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKLSAgICBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZl
VXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOwotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVl
KDI0X2gpOwotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZl
cigpLnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKLSAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRHcmFuZGZh
dGhlcmluZ1RpbWUoMV9oKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOworICAgIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlKDI0X2gpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpLnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9o
KTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoMV9oKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwogICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVt
ZXRyeVdhc0NhcHR1cmVkKGZhbHNlKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHRy
dWUpOwotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigp
LmNsZWFySW5NZW1vcnlTdG9yZSgpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpLmNsZWFySW5NZW1vcnlTdG9yZSgpOwogfQogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGQyMTg3MGRhNDQ2ZjdiOGYxNzFh
NWYzYWNlMzk1MzkxNmI1YWYxMGIuLmY3YTZmZTg3NjNiMWFhNzhmYTE4YTE5MDNkMmM0ZTdiNzEx
YjVkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlTW9uaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTIwNCw4ICsyMDQsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY29weVJlZigpKTsKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzUXVldWUobV9zdGF0aXN0aWNzUXVldWUuY29w
eVJlZigpKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5z
ZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY29weVJlZigp
KTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0
aXN0aWNzUXVldWUobV9zdGF0aXN0aWNzUXVldWUuY29weVJlZigpKTsKICAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCBlNmJhY2JmNGFhMWE5ZmEyYzM0ZTA1NzlkZDAyM2E2MzZhYTE4NzMyLi4w
ODNjNzRmODE3NjA2ZThlMjE4NmU5MzA3ZTAxZWIwNTViZjYxZTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAg
LTQzLDcgKzQ0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxv
Y2suaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CkBAIC04MTYs
NyArODE2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKICNlbmRpZgogCiAgICAgaWYgKGRh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
KQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKG1vZGlmaWVkU2luY2UpOworICAgICAg
ICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlKG1vZGlmaWVkU2luY2UpOwogCiAgICAgLy8gVGhlcmUncyBhIGNo
YW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ug
d2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKQEAgLTEwODUsNyArMTA4NSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAjZW5kaWYKIAogICAgIGlmIChkYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKLSAgICAgICAg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiAK
ICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBj
YWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM3NWRjNzhiMGIwYzYxZjlhMmI4ZDk0ODM4ZTAzZDFmOWVhZWE4ZjYuLmNiZjJlMjhkMjU0
MGJmZjA1M2E0OTc1MjBkZDJhMTNlOWM3YzRjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMiw2ICs5MDIsOCBAQAogCQk0
MUZBRjVGODFFM0MxMDIxMDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY2MUUzQzBCNDcwMDFB
RTY3OCAvKiBMaWJXZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0MUZBRjVGOTFFM0MxMDI1MDAx
QUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJU
Q1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJl
ZE1lbW9yeUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAg
Ki87IH07CisJCTQ2MzQzQjNBMUYwNTk5MjMwMDAzRjMwOSAvKiBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjQ2QUIzMjFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICov
OyB9OworCQk0NjM0M0IzQjFGMDU5OTI2MDAwM0YzMDkgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NDZB
QjMzMUYwNTk4RDQwMDlEMDdGQyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9Owog
CQk0NjNGRDQ4MDFFQjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdG
MUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRF
QzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1MjUwRTYxRUNGNTJEQzAw
MjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2Vi
S2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLzsgfTsKQEAgLTMxNDMsNiArMzE0NSw4IEBACiAJCTQ0
NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRNZW1vcnlDb2NvYS5jcHA7IHBhdGgg
PSBjb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2M0ZENDdGMUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ4MTFFQjk0RUFE
MDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjQ2QUIzMjFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NjQ2QUIzMzFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1MjUwRTUxRUNGNTJDRDAwMjAyNUNCIC8q
IFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02ODU5LDYgKzY4NjMsOCBAQAogCQkJCUJDMTExQjBEMTEyRjVF
NEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUJDMDMyRENGMTBGNDM4
OUYwMDU4QzE1QSAvKiBXZWJQcm9jZXNzUHJveHkuaCAqLywKIAkJCQlCQ0VFN0FCMzEyODE3MDk1
MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTQ2NDZBQjMy
MUYwNTk4RDQwMDlEMDdGQyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi8sCisJCQkJ
NDY0NkFCMzMxRjA1OThENDAwOUQwN0ZDIC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8s
CiAJCQkJNkJFOTY5QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW5hZ2VyLmNwcCAqLywKIAkJCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBE
OUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKQEAgLTg1Njgs
NiArODU3NCw3IEBACiAJCQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0NzlCMTg3
QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjU5NDdBNDE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYzNDNCM0IxRjA1
OTkyNjAwMDNGMzA5IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU5NDc5RDE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MUYxQkEyNUIyNzAwN0NEMzNEIC8qIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVCQTgyNTFCQTI1Q0ZCMDA3Q0Qz
M0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDI4NCw2ICsxMDI5MSw3IEBACiAJCQkJQzAzMzdEQUUxMjdBMjRGRTAwOEZGNEY0IC8qIFdl
YkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDMyREJBMTBGNDM4MEYwMDU4QzE1QSAv
KiBXZWJFdmVudENvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCNUUxMTJG
NjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ2
MzQzQjNBMUYwNTk5MjMwMDAzRjMwOSAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0U0Njk1MzEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0Njk1NTEyMTRFNkNCMDAwQjk4RUIgLyogV2Vi
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTEx
QUREMTEyRjVCOTMwMDMzN0JBQiAvKiBXZWJGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314182</attachid>
            <date>2017-06-29 16:12:43 -0700</date>
            <delta_ts>2017-06-29 16:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173990-20170629161242.patch</filename>
            <type>text/plain</type>
            <size>58863</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzE1ZTYwMTYwMzVmYTg2
ZGVjNjI4OTgzMTBiMjc5OTQyZWZhZDZlNC4uNmUyOWUxNDBiMjMyMWQ1ZDIzNWViMTY3NjA3MjZm
ODk5YmM5NzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE3LTA2LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgU3BsaXQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIgaW50byAyIGNsYXNzZXM6IG9uZSBmb3IgV2ViQ29yZSBhbmQgb25lIGZvciB0aGUg
VUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzM5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAg
IFNwbGl0IFJlc291cmNlTG9hZE9ic2VydmVyIGludG8gMiBjbGFzc2VzOiBvbmUgZm9yIFdlYkNv
cmUgYW5kIG9uZSBmb3IgdGhlIFVJUHJvY2Vzcy4KKyAgICAgICAgVGhleSByZWFsbHkgaGF2ZSBk
aWZmZXJlbnQgQVBJIGFuZCB0aGVyZSBpcyB0aGVyZWZvcmUgY2xvc2UgdG8gbm8gY29kZSBkdXBs
aWNhdGlvbi4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcmltYXJ5RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3VsZExvZyk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnByaW1hcnlEb21haW4pOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuaDoKKworMjAxNy0wNi0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEF2b2lkIGNvcHlpbmcgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyBvYmplY3RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM5NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDEwNWE5NmYzZmYyYjFm
ZmVjMTU3NDkyZDAxMDM5NDUxMmFlMWE3YjMuLjRlODdmNzZhYjliN2U3MjgxNWFjNzhkYzgzNjhm
NzU0OTM3N2NiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxNy0wNi0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFNwbGl0IFJlc291cmNlTG9h
ZE9ic2VydmVyIGludG8gMiBjbGFzc2VzOiBvbmUgZm9yIFdlYkNvcmUgYW5kIG9uZSBmb3IgdGhl
IFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICBTcGxpdCBSZXNvdXJjZUxvYWRPYnNlcnZlciBpbnRvIDIgY2xhc3Nlczogb25lIGZvciBXZWJD
b3JlIGFuZCBvbmUgZm9yIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIFRoZXkgcmVhbGx5IGhhdmUg
ZGlmZmVyZW50IEFQSSBhbmQgdGhlcmUgaXMgdGhlcmVmb3JlIGNsb3NlIHRvIG5vIGNvZGUgZHVw
bGljYXRpb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnJlZ2lzdGVyVXNl
ckRlZmF1bHRzSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwcmltYXJ5RG9tYWluKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0
aXN0aWNzUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
Y2xlYXJJbk1lbW9yeVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFyVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hhZFVzZXJJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjppc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0R3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjppc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRU
aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRNaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldEdyYW5kZmF0
aGVyaW5nVGltZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpm
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVUZWxlbWV0cnlIYW5kbGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dFByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0SGFzSGFkVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6Omhh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXRHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OmlzR3JhbmRmYXRoZXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRTdWJmcmFtZVVu
ZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFRpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0
R3JhbmRmYXRoZXJpbmdUaW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXI6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyRm9yT25lRG9t
YWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6
OmZpcmVUZWxlbWV0cnlIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Y2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpyZXNldFRvQ29uc2lzdGVudFN0
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxNy0wNi0yOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIGludGVybWl0dGVudCBMYXlvdXQgVGVzdCBmYWls
IGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5l
cmF0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwCmluZGV4IGRjNDE0NDlhNzY0NGRkNmIxZjE1NjE0OWIyYmM1NTE5YjExYzA5YjYuLjNm
YzZhYmFiNWUwYzRlNmU4M2EzOTExY2I3ZmJiMjA3MzFkNmEzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtMzAsMjUgKzMwLDIzIEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCi0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlB1Ymxp
Y1N1ZmZpeC5oIgotI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFy
eURvbWFpbihjb25zdCBUJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKK30KKwogc3RhdGljIFNlY29uZHMgdGlt
ZXN0YW1wUmVzb2x1dGlvbiB7IDFfaCB9OwogCiBSZXNvdXJjZUxvYWRPYnNlcnZlciYgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkKQEAgLTY5LDQyICs2NywxMyBAQCB2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzUXVldWUoUmVmPFdURjo6V29ya1F1
ZXVlPiYmIHF1ZXVlKQogICAgIEFTU0VSVCghbV9xdWV1ZSk7CiAgICAgbV9xdWV1ZSA9IFdURk1v
dmUocXVldWUpOwogfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1l
bW9yeVN0b3JlKCkKLXsKLSAgICBpZiAoIW1fc3RvcmUpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAg
ICAgICAgbV9zdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOwotICAgIH0pOwotfQotICAgIAotdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpCi17
Ci0gICAgaWYgKCFtX3N0b3JlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1f
cXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7Ci0gICAgICAgIG1fc3RvcmUt
PmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQotewotICAgIC8vIEZv
ciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGluZyByZWdhcmRsZXNzIG9m
IG1vZGlmaWVkU2luY2UKLSAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7Ci0gICAgY2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOwotfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBy
ZXR1cm4gcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSAzMDAgJiYgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA8PSAzOTk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNob3Vs
ZExvZyhQYWdlKiBwYWdlKQorYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hvdWxkTG9nKFBh
Z2UqIHBhZ2UpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEVyciBvbiB0aGUgc2FmZSBzaWRlIHVu
dGlsIHdlIGhhdmUgc29ydGVkIG91dCB3aGF0IHRvIGRvIGluIHdvcmtlciBjb250ZXh0cwogICAg
IGlmICghcGFnZSkKQEAgLTM2NywyMjQgKzMzNiw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9j
CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFj
dGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9xdWV1ZSk7Ci0gICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9t
YWluKHVybCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICBhdXRvJiBz
dGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5RG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50
ZXJhY3Rpb24gPSB0cnVlOwotICAgICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyBwcmltYXJ5RG9t
YWluU3RyaW5nIH0sIHsgfSwgZmFsc2UpOwotICAgIH0pOwotfQotCi12b2lkIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKLXsKLSAgICBp
ZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOwot
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgCi0gICAgc3RhdGlzdGlj
cy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLSAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lID0geyB9OwotfQotCi1ib29sIFJlc291cmNlTG9hZE9ic2VydmVy
OjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgaWYgKHVybC5p
c0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAgIAotICAgIHJldHVybiBtX3N0
b3JlLT5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljcyk7Ci19Ci0KLXZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJs
KQotewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGlj
c0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLSAgICAKLSAg
ICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOwotfQotCi1ib29sIFJlc291
cmNlTG9hZE9ic2VydmVyOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQotewot
ICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGlj
c0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKLSAgICAKLSAg
ICByZXR1cm4gc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlOwotfQotICAgIAotdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVy
bCkKLXsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3Rp
Y3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgCi0g
ICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gZmFsc2U7Ci19Ci0gICAgCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYgdXJsLCBi
b29sIHZhbHVlKQotewotICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3Rv
cmUtPnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5l
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJs
KSk7Ci0gICAgCi0gICAgc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkID0gdmFsdWU7Ci19Ci0gICAg
Ci1ib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjppc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1
cmwpCi17Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9y
ZS0+c3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwp
KTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkOwotfQotCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29u
c3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSkKLXsKLSAgICBpZiAoc3ViZnJh
bWUuaXNCbGFua1VSTCgpIHx8IHN1YmZyYW1lLmlzRW1wdHkoKSB8fCB0b3BGcmFtZS5pc0JsYW5r
VVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
QVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmltYXJ5VG9w
RnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHko
KSwgcHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSku
aXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3Jl
LT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUt
PmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1l
RG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwotICAgIH0pOwotfQotCi12
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3QgVVJMJiB0b3BGcmFtZSkKLXsKLSAgICBp
ZiAoc3VicmVzb3VyY2UuaXNCbGFua1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8fCB0
b3BGcmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1l
KS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFy
eURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAgICAgYXV0byYg
c3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nKTsKLSAgICAgICAgc3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21h
aW5TdHJpbmcpOwotICAgIH0pOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVVJMJiBzdWJyZXNvdXJjZSwgY29uc3Qg
VVJMJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKLXsKLSAgICBpZiAoc3VicmVzb3VyY2UuaXNCbGFu
a1VSTCgpIHx8IHN1YnJlc291cmNlLmlzRW1wdHkoKSB8fCBob3N0TmFtZVJlZGlyZWN0ZWRUby5p
c0JsYW5rVVJMKCkgfHwgaG9zdE5hbWVSZWRpcmVjdGVkVG8uaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKG1fcXVldWUpOwotICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKGhvc3RO
YW1lUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWlu
U3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsK
LSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nKTsKLSAg
ICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChwcmltYXJ5
UmVkaXJlY3REb21haW5TdHJpbmcpOwotICAgIH0pOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vjb25kcykKLXsK
LSAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29uZHMpOwotfQot
Ci12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9u
RnJlZShTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgbV9zdG9yZS0+c2V0VGltZVRvTGl2ZUNvb2tp
ZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRz
KQotewotICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92
YWwoc2Vjb25kcyk7Ci19Ci0gICAgCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZWR1
Y2VkVGltZXN0YW1wUmVzb2x1dGlvbihTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgaWYgKHNlY29u
ZHMgPiAwX3MpCi0gICAgICAgIHRpbWVzdGFtcFJlc29sdXRpb24gPSBzZWNvbmRzOwotfQotCi12
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBz
ZWNvbmRzKQotewotICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoc2Vjb25kcyk7Ci19Ci0gICAgCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpm
aXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKQotewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1
c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFp
biB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpc10gewotICAgICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRs
ZXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkKLXsKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNl
ZCBieSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goW3RoaXNdIHsKLSAgICAgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFy
Rmlyc3QpCi17Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBzeXN0ZW0u
IFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBkb21haW5zVG9S
ZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1Rv
UmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+
Ojpjb3B5KGRvbWFpbnNUb0FkZCksIGNsZWFyRmlyc3RdIHsKLSAgICAgICAgbV9zdG9yZS0+Zmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1Rv
QWRkLCBjbGVhckZpcnN0KTsKLSAgICB9KTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6ZmlyZVRlbGVtZXRyeUhhbmRsZXIoKQotewotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2Vk
IGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3N0b3JlLT5maXJlVGVs
ZW1ldHJ5SGFuZGxlcigpOwotfQotICAgIAotU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpw
cmltYXJ5RG9tYWluKGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiBwcmltYXJ5RG9tYWlu
KHVybC5ob3N0KCkpOwotfQotCi1TdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnByaW1hcnlE
b21haW4oY29uc3QgU3RyaW5nJiBob3N0KQotewotICAgIGlmIChob3N0LmlzTnVsbCgpIHx8IGhv
c3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxsT3JpZ2luIik7
Ci0KLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgIFN0cmluZyBwcmltYXJ5RG9t
YWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihob3N0KTsKLSAgICAvLyBXZSB3aWxs
IGhhdmUgYW4gZW1wdHkgc3RyaW5nIGhlcmUgaWYgdGhlcmUgaXMgbm8gVExELiBVc2UgdGhlIGhv
c3QgYXMgYSBmYWxsYmFjay4KLSAgICBpZiAoIXByaW1hcnlEb21haW4uaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gcHJpbWFyeURvbWFpbjsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGhvc3Q7Ci19
Ci0KIFN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zvck9yaWdpbihjb25z
dCBTdHJpbmcmIG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9zdG9yZSA/IG1fc3RvcmUtPnN0YXRp
c3RpY3NGb3JPcmlnaW4ob3JpZ2luKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmgKaW5kZXggYmQ3NTkwYmJjN2I4MmNlN2YyNWZhMGYxMzJiNWYyOGE2YmU1YThlZi4uOWEw
NTQ1YzkyNjBjNzUzY2IwMTI4OWVhMDBmNmEwZDU2ODk3ODU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTU1LDQzICs1NSwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKGNvbnN0IEZyYW1lKiwgY29uc3QgVVJM
Jik7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9u
KGNvbnN0IERvY3VtZW50Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbihjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyVXNl
ckludGVyYWN0aW9uKGNvbnN0IFVSTCYpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhclByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0R3JhbmRmYXRoZXJlZChjb25zdCBVUkwmLCBib29sIHZhbHVlKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmKTsKLSAgICAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwm
IHN1YmZyYW1lLCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNl
LCBjb25zdCBVUkwmIHRvcEZyYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwm
IGhvc3ROYW1lUmVkaXJlY3RlZFRvKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNv
bmRzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0
aW9uKFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdU
aW1lKFNlY29uZHMpOwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZURhdGFNb2Rp
ZmljYXRpb25IYW5kbGVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
UmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmly
c3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKLQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JlKFJlZjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlz
dGljc1F1ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhckluTWVtb3J5U3RvcmUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0
aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIGJvb2wgc2hv
dWxkTG9nKFBhZ2UqKTsKLSAgICBzdGF0aWMgU3RyaW5nIHByaW1hcnlEb21haW4oY29uc3QgVVJM
Jik7Ci0gICAgc3RhdGljIFN0cmluZyBwcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgaG9zdCk7
CisgICAgYm9vbCBzaG91bGRMb2coUGFnZSopIGNvbnN0OwogCiAgICAgUmVmUHRyPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9zdG9yZTsKICAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+
IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDQzNzgwM2VlYzkxNDFmYTVmM2VmNDdmMTk2ZGRkMDgy
OWM3NGFjOGEuLmMwY2UxNzFjMTQ5MmY4OWNlZGFkODE4NGEwMzk4ZmMzNjVmM2MwZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5o
IgorI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAg
LTQ2NSw1ICs0NjYsMjUgQEAgV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjxMb2NrPiYgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzTG9jaygpCiB7CiAgICAgcmV0dXJuIG1f
c3RhdGlzdGljc0xvY2s7CiB9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIHByaW1hcnlEb21h
aW4odXJsLmhvc3QoKSk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIGlmIChob3N0LmlzTnVs
bCgpIHx8IGhvc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJudWxs
T3JpZ2luIik7CisKKyNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQorICAgIFN0cmluZyBw
cmltYXJ5RG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihob3N0KTsKKyAgICAv
LyBXZSB3aWxsIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGhlcmUgaWYgdGhlcmUgaXMgbm8gVExELiBV
c2UgdGhlIGhvc3QgYXMgYSBmYWxsYmFjay4KKyAgICBpZiAoIXByaW1hcnlEb21haW4uaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gcHJpbWFyeURvbWFpbjsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGhvc3Q7Cit9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNjVhNGVhYmMyMzI2Zjc0Y2JjMTk2MTY4NmY0
NjIzN2IzMWYxMmIyYy4uYzUwYzNhNTg1NjM1Mjc0MGY4Nzk1YmY2Mjc4NWYxMjNkZDgzZjkyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJJbk1lbW9yeSgpOwotICAgIHZvaWQg
Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CiAKLSAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYp
OwotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdGFrZVJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihj
b25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IHRha2VSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgc2V0UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiYpOwogCiAgICAgYm9vbCBpc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpAQCAtODEsMTQgKzgxLDE0IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZpcmVUZWxlbWV0cnlDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBoYW5k
bGVyKTsKIAotICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0gICAgdm9p
ZCBmaXJlVGVsZW1ldHJ5SGFuZGxlcigpOwotICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbihTZWNvbmRzKTsKLSAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlKFNlY29uZHMpOwotICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRz
UmVtb3ZhbChTZWNvbmRzKTsKLSAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVRlbGVtZXRyeUhhbmRsZXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJl
ZShTZWNvbmRzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pbmltdW1UaW1lQmV0d2Vl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKLSAgICB2b2lkIGZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVt
b3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3Qp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJik+JiYpOwogCkBAIC0xMDMsNiArMTAzLDEwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKTsKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCBXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyPExvY2s+JiBzdGF0aXN0aWNz
TG9jaygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwcmltYXJ5RG9tYWlu
KGNvbnN0IFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcHJpbWFyeURv
bWFpbihjb25zdCBTdHJpbmcmIGhvc3QpOworCiBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCBkYWNk
ODRjODQ4MzkyYzcyZDAxN2EwMDljZmNmYzE3YzBlZWFkMDdkLi42OGQ2Mjg1ZDhlM2I5MjYwMzRj
YTBmMTZlZTcxMTM2ZmY4OTY2OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtMTM1LDcgKzEz
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
cHJvdG9jb2xJcygiZGF0YSIpOyB9CiAgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwotICAg
IGJvb2wgaXNCbGFua1VSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNCbGFu
a1VSTCgpIGNvbnN0OwogICAgIGJvb2wgY2Fubm90QmVBQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2Fubm90QmVBQmFzZVVSTDsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRQcm90
b2NvbChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMTVlNzFmMTJjNjQ1
YzU2Y2Q5ZmNkZjM1ODMzNThkZDY5NGRmNDlmNS4uNjdkNDQ3NzZiMDVkMGFlZWVjNGU4MjFhZmNi
Zjk1MDEyYjJjMTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTMyOCw2ICszMjgsNyBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAogICAgIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWV3cG9ydEF0dHJpYnV0
ZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tCmluZGV4
IGJlMWQ5NTQ5Mjg1NTUzOGYyZTA4MjUxNmNmZjMyY2IzYzVmNjQ2NmUuLjM1MWU3YjFmZTcyYWE0
YjE4MWM4YTU2M2YyNDUyZGFiNzBkNTIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlckNvY29hLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5oIgogCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMu
aCIKLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbXBvcnQgIldl
YlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC00MywxOSArNDMsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6
cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAgICAgIAogICAgICAgICBkb3VibGUg
dGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uS2V5KCldOwogICAgICAgICBpZiAodGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA+IDAgJiYgdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbiA8
PSAzMCAqIGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gfSk7CisgICAgICAgICAgICBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNl
Y29uZHMgeyB0aW1lVG9MaXZlVXNlckludGVyYWN0aW9uIH0pOwogICAgICAgICAKICAgICAgICAg
ZG91YmxlIHRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlID0gW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gZG91YmxlRm9yS2V5OiBXZWJQcmVmZXJlbmNlc0tleTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlS2V5KCldOwog
ICAgICAgICBpZiAodGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPiAwICYmIHRpbWVUb0xp
dmVDb29raWVQYXJ0aXRpb25GcmVlIDw9IGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0
aXRpb25GcmVlKFNlY29uZHMgeyB0aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB9KTsKLSAg
ICAgICAgCi0gICAgICAgIGRvdWJsZSByZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbiA9IFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGRvdWJsZUZvcktleTogV2ViUHJlZmVy
ZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlv
bktleSgpXTsKLSAgICAgICAgaWYgKHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uID4gMCAmJiBy
ZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbiA8PSBob3VySW5TZWNvbmRzKQotICAgICAgICAgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0UmVkdWNlZFRpbWVzdGFt
cFJlc29sdXRpb24oU2Vjb25kcyB7IHJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uIH0pOworICAg
ICAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vjb25kcyB7IHRpbWVUb0xpdmVDb29raWVQYXJ0
aXRpb25GcmVlIH0pOwogCiAgICAgICAgIGRvdWJsZSBncmFuZGZhdGhlcmluZ1RpbWUgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBkb3VibGVGb3JLZXk6IFdlYlByZWZl
cmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lS2V5KCld
OwogICAgICAgICBpZiAoZ3JhbmRmYXRoZXJpbmdUaW1lID4gMCAmJiBncmFuZGZhdGhlcmluZ1Rp
bWUgPD0gNyAqIGRheUluU2Vjb25kcykKLSAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWRPYnNlcnZlcigpLnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgZ3JhbmRm
YXRoZXJpbmdUaW1lIH0pOworICAgICAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBncmFuZGZhdGhl
cmluZ1RpbWUgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNmYwMWMxYjk1
YTI2OTQzZjJiMmQ5MzllY2Q5MDlhYWMwYmVjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0wLDAgKzEs
MjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlJl
c291cmNlTG9hZE9ic2VydmVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkQ29waWVyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbmcgcHJpbWFyeURvbWFpbihjb25zdCBUJiB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcmltYXJ5
RG9tYWluKHZhbHVlKTsKK30KKworV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFdlYlJlc291cmNlTG9hZE9ic2VydmVyPiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjsKKyAg
ICByZXR1cm4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiYmIHN0b3JlKQoreworICAgIGlmIChtX3N0b3JlICYmIG1fcXVldWUpCisgICAgICAg
IG1fcXVldWUgPSBudWxscHRyOworICAgIG1fc3RvcmUgPSBXVEZNb3ZlKHN0b3JlKTsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1F1ZXVlKFJlZjxXVEY6
OldvcmtRdWV1ZT4mJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQoIW1fcXVldWUpOworICAgIG1fcXVl
dWUgPSBXVEZNb3ZlKHF1ZXVlKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
Y2xlYXJJbk1lbW9yeVN0b3JlKCkKK3sKKyAgICBpZiAoIW1fc3RvcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10g
eworICAgICAgICBtX3N0b3JlLT5jbGVhckluTWVtb3J5KCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUo
KQoreworICAgIGlmICghbV9zdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1f
cXVldWUpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CisgICAgICAgIG1fc3RvcmUt
PmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIC8v
IEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGluZyByZWdhcmRsZXNz
IG9mIG1vZGlmaWVkU2luY2UKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CisgICAg
Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZSgpOworfQorCit2b2lkIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCit7CisgICAg
aWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQVNTRVJUKG1fcXVldWUpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcmlt
YXJ5RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih1cmwpLmlzb2xhdGVkQ29weSgpXSB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3Rh
dGlzdGljc0xvY2soKSk7CisgICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluU3Ry
aW5nKTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBX
YWxsVGltZTo6bm93KCk7CisgICAgICAgIH0KKworICAgICAgICBtX3N0b3JlLT5maXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsgfSwgZmFs
c2UpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwo
KSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3Rp
Y3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHBy
aW1hcnlEb21haW4odXJsKSk7CisKKyAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9
IGZhbHNlOworICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSB7
IH07Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hhZFVzZXJJbnRlcmFj
dGlvbihjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlEb21haW4odXJsKSk7CisKKyAgICByZXR1cm4gbV9zdG9yZS0+aGFzSGFkUmVjZW50VXNlcklu
dGVyYWN0aW9uKHN0YXRpc3RpY3MpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlz
QmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8m
IHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisKKyAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50
UmVzb3VyY2UgPSB0cnVlOworfQorCitib29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjppc1By
ZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKQoreworICAgIGlmICh1cmwuaXNCbGFua1VS
TCgpIHx8IHVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgYXV0byYg
c3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKworICAgIHJldHVybiBzdGF0aXN0aWNzLmlzUHJl
dmFsZW50UmVzb3VyY2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5pc0JsYW5r
VVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBzdGF0
aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihwcmltYXJ5RG9tYWluKHVybCkpOworCisgICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291
cmNlID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldEdyYW5k
ZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUpCit7CisgICAgaWYgKHVybC5pc0Js
YW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9jaygpKTsKKyAgICBhdXRvJiBz
dGF0aXN0aWNzID0gbV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworCisgICAgc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVk
ID0gdmFsdWU7Cit9CisKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmlzR3JhbmRmYXRo
ZXJlZChjb25zdCBVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1h
cnlEb21haW4odXJsKSk7CisKKyAgICByZXR1cm4gc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkOwor
fQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW4oY29uc3QgVVJMJiBzdWJmcmFtZSwgY29uc3QgVVJMJiB0b3BGcmFtZSkKK3sKKyAg
ICBpZiAoc3ViZnJhbWUuaXNCbGFua1VSTCgpIHx8IHN1YmZyYW1lLmlzRW1wdHkoKSB8fCB0b3BG
cmFtZS5pc0JsYW5rVVJMKCkgfHwgdG9wRnJhbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQobV9xdWV1ZSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
aW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odG9wRnJhbWUpLmlzb2xh
dGVkQ29weSgpLCBwcmltYXJ5U3ViRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1
YmZyYW1lKS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fc3RvcmUtPnN0YXRpc3RpY3NMb2NrKCkpOworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0g
bV9zdG9yZS0+ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5
U3ViRnJhbWVEb21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMuYWRkKHByaW1hcnlUb3BGcmFtZURvbWFpblN0cmluZyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YnJlc291cmNlLCBjb25zdCBVUkwmIHRvcEZyYW1l
KQoreworICAgIGlmIChzdWJyZXNvdXJjZS5pc0JsYW5rVVJMKCkgfHwgc3VicmVzb3VyY2UuaXNF
bXB0eSgpIHx8IHRvcEZyYW1lLmlzQmxhbmtVUkwoKSB8fCB0b3BGcmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3F1ZXVlKTsKKyAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJpbWFyeVRvcEZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbih0
b3BGcmFtZSkuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyA9
IHByaW1hcnlEb21haW4oc3VicmVzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdG9yZS0+c3RhdGlzdGljc0xvY2soKSk7CisgICAgICAg
IGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlTdWJyZXNvdXJjZURvbWFpblN0cmluZyk7CisgICAgICAgIHN0
YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQocHJpbWFyeVRvcEZy
YW1lRG9tYWluU3RyaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFVSTCYgc3VicmVzb3Vy
Y2UsIGNvbnN0IFVSTCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pCit7CisgICAgaWYgKHN1YnJlc291
cmNlLmlzQmxhbmtVUkwoKSB8fCBzdWJyZXNvdXJjZS5pc0VtcHR5KCkgfHwgaG9zdE5hbWVSZWRp
cmVjdGVkVG8uaXNCbGFua1VSTCgpIHx8IGhvc3ROYW1lUmVkaXJlY3RlZFRvLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fcXVldWUpOworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWlu
KGhvc3ROYW1lUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNl
RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCld
IHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0b3JlLT5zdGF0aXN0aWNzTG9j
aygpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fc3RvcmUtPmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5n
KTsKKyAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChw
cmltYXJ5UmVkaXJlY3REb21haW5TdHJpbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgc2Vj
b25kcykKK3sKKyAgICBtX3N0b3JlLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHNlY29u
ZHMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRUaW1lVG9MaXZlQ29v
a2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9zdG9yZS0+c2V0VGlt
ZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwo
U2Vjb25kcyBzZWNvbmRzKQoreworICAgIG1fc3RvcmUtPnNldE1pbmltdW1UaW1lQmV0d2VlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHNlY29uZHMpCit7CisgICAgbV9z
dG9yZS0+c2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsK
K30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZURhdGFNb2RpZmljYXRpb25I
YW5kbGVyKCkKK3sKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0aW5nIHN5c3Rl
bS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKKyAg
ICAgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpCit7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgdGVzdGluZyBz
eXN0ZW0uIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7
CisgICAgICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBjbGVhckZpcnN0KQor
eworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lzdGVtLiBTaG91bGQg
b25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgZG9tYWluc1RvUmVtb3Zl
ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92
ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29w
eShkb21haW5zVG9BZGQpLCBjbGVhckZpcnN0XSB7CisgICAgICAgIG1fc3RvcmUtPmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwg
Y2xlYXJGaXJzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKK3sKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBi
eSB0ZXN0aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhy
ZWFkLgorICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zdG9yZS0+ZmlyZVRl
bGVtZXRyeUhhbmRsZXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVjMTA3YjJiN2I0ZmJkNmJmNTI0OGE0ODRlZjQ2YWM2MjQ5YjQ5NmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVVJMOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcj47CitwdWJsaWM6CisgICAgc3Rh
dGljIFdlYlJlc291cmNlTG9hZE9ic2VydmVyJiBzaGFyZWRPYnNlcnZlcigpOworCisgICAgdm9p
ZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBoYXNI
YWRVc2VySW50ZXJhY3Rpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBjbGVhclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKKworICAgIHZvaWQgc2V0UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgYm9vbCBpc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29u
c3QgV2ViQ29yZTo6VVJMJiwgYm9vbCB2YWx1ZSk7CisgICAgYm9vbCBpc0dyYW5kZmF0aGVyZWQo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisKKyAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbihjb25zdCBXZWJDb3JlOjpVUkwmIHN1YmZyYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHRvcEZyYW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihj
b25zdCBXZWJDb3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIHRvcEZy
YW1lKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBXZWJD
b3JlOjpVUkwmIHN1YnJlc291cmNlLCBjb25zdCBXZWJDb3JlOjpVUkwmIGhvc3ROYW1lUmVkaXJl
Y3RlZFRvKTsKKworICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRz
KTsKKyAgICB2b2lkIHNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMpOwor
ICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRz
KTsKKyAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKKworICAgIHZvaWQg
ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgdm9pZCBmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIoKTsKKyAgICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVz
SGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpOworICAgIHZvaWQgZmly
ZVRlbGVtZXRyeUhhbmRsZXIoKTsKKworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JlKFJlZjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOworICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1F1ZXVlKFJlZjxXVEY6OldvcmtRdWV1ZT4mJik7CisgICAgdm9pZCBjbGVhckluTWVt
b3J5U3RvcmUoKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoKTsK
KyAgICB2b2lkIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3N0b3JlOworICAg
IFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKaW5kZXggOTc1ZjMxMTBkZmM1MGY5YmNiMzAz
YjBjOGU4OWNlMGRkZGRjMmFhOS4uODcxNzM4ZjUxMjRjOTI3ZjNmNDU0MjE3YTI1MzI1ZGEwYTdk
YmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM4LDk1ICszOCw5NSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFByZXZhbGVudFJlc291
cmNlKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
KQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIGhvc3ROYW1lKSk7CisgICAgICAgIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFByZXZhbGVudFJlc291
cmNlKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKICAgICBlbHNlCi0gICAgICAgIFdlYkNvcmU6OlJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKFVSTCgpLCBob3N0TmFtZSkpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgaG9z
dE5hbWUpKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6aXNQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5pc1ByZXZhbGVu
dFJlc291cmNlKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKKyAgICByZXR1cm4gV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJM
KCksIGhvc3ROYW1lKSk7CiB9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyOjpzZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBob3N0TmFtZSwg
Ym9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJM
KCksIGhvc3ROYW1lKSk7CisgICAgICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiAgICAg
ZWxzZQotICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2
ZXIoKS5jbGVhclVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1lKSk7CisgICAgICAg
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNsZWFyVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKIH0KIAogYm9vbCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFuYWdlcjo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgaG9z
dE5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1lKSk7
CisgICAgcmV0dXJuIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmhh
c0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIGhvc3ROYW1lKSk7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgU3Ry
aW5nJiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9z
dE5hbWUpLCB2YWx1ZSk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIGhvc3ROYW1lKSwgdmFsdWUpOwogfQog
CiBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjppc0dyYW5kZmF0aGVyZWQo
Y29uc3QgU3RyaW5nJiBob3N0TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6UmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuaXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwg
aG9zdE5hbWUpKTsKKyAgICByZXR1cm4gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9i
c2VydmVyKCkuaXNHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgaG9zdE5hbWUpKTsKIH0KIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0U3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2luKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUsIGNvbnN0IFN0cmluZyYgdG9wRnJhbWVI
b3N0TmFtZSkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIoKS5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBob3N0TmFt
ZSksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0TmFtZSkpOworICAgIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihV
UkwoVVJMKCksIGhvc3ROYW1lKSwgVVJMKFVSTCgpLCB0b3BGcmFtZUhvc3ROYW1lKSk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldFN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBjb25zdCBTdHJpbmcmIHRv
cEZyYW1lSG9zdE5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZE9ic2VydmVyKCkuc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFVSTChVUkwo
KSwgaG9zdE5hbWUpLCBVUkwoVVJMKCksIHRvcEZyYW1lSG9zdE5hbWUpKTsKKyAgICBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW4oVVJMKFVSTCgpLCBob3N0TmFtZSksIFVSTChVUkwoKSwgdG9wRnJhbWVIb3N0
TmFtZSkpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpzZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgY29uc3Qg
U3RyaW5nJiBob3N0TmFtZVJlZGlyZWN0ZWRUbykKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
VG8oVVJMKFVSTCgpLCBob3N0TmFtZSksIFVSTChVUkwoKSwgaG9zdE5hbWVSZWRpcmVjdGVkVG8p
KTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBob3N0TmFtZSksIFVSTChVUkwoKSwg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMp
CiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCku
c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzZWNvbmRzKTsKKyAgICBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KHNlY29uZHMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpz
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzIHNlY29uZHMpCiB7Ci0gICAg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoc2Vjb25kcyk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUo
c2Vjb25kcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNl
dE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyBzZWNvbmRzKQog
ewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNl
dE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoc2Vjb25kcyk7CisgICAgV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0TWluaW11bVRpbWVCZXR3
ZWVlbkRhdGFSZWNvcmRzUmVtb3ZhbChzZWNvbmRzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWFuYWdlcjo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25k
cykKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcyk7CisgICAgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKHNlY29uZHMpOwog
fQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlRGF0YU1vZGlm
aWNhdGlvbkhhbmRsZXIoKQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOworICAgIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVEYXRhTW9kaWZpY2F0aW9u
SGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKQogewotICAgIFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29r
aWVzSGFuZGxlcigpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZl
cigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hh
bmRsZXJGb3JPbmVEb21haW4oY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsK
ICAgICBpZiAodmFsdWUpCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHto
b3N0TmFtZX0sIGZhbHNlKTsKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZE9ic2VydmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgfSwge2hvc3RO
YW1lfSwgZmFsc2UpOwogICAgIGVsc2UKLSAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KHtob3N0TmFtZX0sIHsgfSwgZmFsc2UpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoe2hv
c3ROYW1lfSwgeyB9LCBmYWxzZSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OmZpcmVUZWxlbWV0cnlIYW5kbGVyKCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJlVGVsZW1ldHJ5SGFuZGxlcigpOwor
ICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVUZWxlbWV0
cnlIYW5kbGVyKCk7CiB9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUp
CkBAIC0xNTEsMjQgKzE1MSwyNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5h
Z2VyOjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcgogCiB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpjbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dFN0b3JlKCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CisgICAgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZSgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpj
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKHVuc2lnbmVk
IGhvdXJzKQogewotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNl
cnZlcigpLmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMoaG91cnMpKTsKKyAgICBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudFN0b3JlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpIC0gc3RkOjpjaHJvbm86
OmhvdXJzKGhvdXJzKSk7CiB9CiAgICAgCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKDI0X2ggKiAzMC4pOwotICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKDI0X2gpOwotICAg
IFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldE1pbmlt
dW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKLSAgICBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUo
MV9oKTsKKyAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRU
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKDI0X2ggKiAzMC4pOworICAgIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25G
cmVlKDI0X2gpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigp
LnNldE1pbmltdW1UaW1lQmV0d2VlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMV9oKTsKKyAgICBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoMV9oKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwogICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKGZhbHNlKTsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3Vs
ZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHRydWUpOwotICAgIFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLmNsZWFySW5NZW1v
cnlTdG9yZSgpOworICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigp
LmNsZWFySW5NZW1vcnlTdG9yZSgpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDY0ZTYwNzA0NDFkYWJkMGZlMjVhMDYwNTM3MTU3N2Jh
Y2IxZDVmZjcuLjkxZTZkMDQyYjFmNjNmNjQ3OGExY2ZkYTZjYmNmNGE1OGM4Yzg3MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YUZldGNoT3B0aW9uLmgiCkBAIC0zNyw3ICszOCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlTW9uaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9i
c2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KQEAgLTIxMCw4ICsyMTAsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY29weVJlZigpKTsKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2
ZXIoKS5zZXRTdGF0aXN0aWNzUXVldWUobV9zdGF0aXN0aWNzUXVldWUuY29weVJlZigpKTsKKyAg
ICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNz
U3RvcmUobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY29weVJlZigpKTsKKyAgICBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzUXVldWUo
bV9zdGF0aXN0aWNzUXVldWUuY29weVJlZigpKTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS0+c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gewogICAgICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCBlNmJhY2JmNGFhMWE5ZmEyYzM0ZTA1NzlkZDAyM2E2MzZhYTE4NzMyLi4wODNjNzRmODE3NjA2
ZThlMjE4NmU5MzA3ZTAxZWIwNTViZjYxZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKQEAgLTQzLDcgKzQ0LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdpbkxvY2suaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CkBAIC04MTYsNyArODE2LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKICNlbmRpZgogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpKQotICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudFN0b3JlKG1vZGlmaWVkU2luY2UpOworICAgICAgICBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dFN0b3JlKG1vZGlmaWVkU2luY2UpOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHdl
IGRvbid0IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2FudCB0byBkaXNw
YXRjaCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIGNvbnN0IFZlCiAjZW5kaWYKIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSkKLSAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuY2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZSgpOworICAgICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIoKS5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKCk7CiAKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElm
IHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdh
eS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3NWRjNzhi
MGIwYzYxZjlhMmI4ZDk0ODM4ZTAzZDFmOWVhZWE4ZjYuLmNiZjJlMjhkMjU0MGJmZjA1M2E0OTc1
MjBkZDJhMTNlOWM3YzRjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwMiw2ICs5MDIsOCBAQAogCQk0MUZBRjVGODFFM0Mx
MDIxMDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUY2MUUzQzBCNDcwMDFBRTY3OCAvKiBMaWJX
ZWJSVENSZXNvbHZlci5oICovOyB9OwogCQk0MUZBRjVGOTFFM0MxMDI1MDAxQUU2NzggLyogTGli
V2ViUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFGQUY1RjcxRTNDMEI0NzAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVyLmNw
cCAqLzsgfTsKIAkJNDQ1MEFFQzAxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29h
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBB
RUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi87IH07CisJCTQ2
MzQzQjNBMUYwNTk5MjMwMDAzRjMwOSAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjQ2QUIzMjFGMDU5
OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovOyB9OworCQk0NjM0
M0IzQjFGMDU5OTI2MDAwM0YzMDkgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NDZBQjMzMUYwNTk4RDQw
MDlEMDdGQyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjNGRDQ4MDFF
Qjk0NTk2MDBBMjk4MkMgLyogV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDdGMUVCOTQ1ODQwMEEy
OTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVy
bWluYXRpb25SZWFzb24uaCAqLzsgfTsKIAkJNDY1MjUwRTYxRUNGNTJEQzAwMjAyNUNCIC8qIFdl
YktpdDJJbml0aWFsaXplQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjUyNTBFNTFFQ0Y1MkNEMDAyMDI1Q0IgLyogV2ViS2l0MkluaXRpYWxp
emVDb2NvYS5tbSAqLzsgfTsKQEAgLTMxNDMsNiArMzE0NSw4IEBACiAJCTQ0NTBBRUJGMURDM0ZB
RTUwMDk5NDNGMiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRNZW1vcnlDb2NvYS5jcHA7IHBhdGggPSBjb2NvYS9TaGFy
ZWRNZW1vcnlDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2M0ZENDdG
MUVCOTQ1ODQwMEEyOTgyQyAvKiBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyog
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0NjQ2QUIzMjFGMDU5OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjQ2QUIzMzFGMDU5
OEQ0MDA5RDA3RkMgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY1MjUwRTUxRUNGNTJDRDAwMjAyNUNCIC8qIFdlYktpdDJJbml0
aWFsaXplQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVz
c1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02ODU5LDYgKzY4NjMsOCBAQAogCQkJCUJDMTExQjBEMTEyRjVFNEYwMDMzN0JBQiAv
KiBXZWJQcm9jZXNzUHJveHkuY3BwICovLAogCQkJCUJDMDMyRENGMTBGNDM4OUYwMDU4QzE1QSAv
KiBXZWJQcm9jZXNzUHJveHkuaCAqLywKIAkJCQlCQ0VFN0FCMzEyODE3MDk1MDA5ODI3REEgLyog
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTQ2NDZBQjMyMUYwNTk4RDQwMDlE
MDdGQyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi8sCisJCQkJNDY0NkFCMzMxRjA1
OThENDAwOUQwN0ZDIC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8sCiAJCQkJNkJFOTY5
QTExRTQzQjhBNDAwOEI3NDgzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNw
cCAqLywKIAkJCQk2QkU5Njk5RjFFNDNCODZFMDA4Qjc0ODMgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbmFnZXIuaCAqLywKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKQEAgLTg1NjgsNiArODU3NCw3IEBA
CiAJCQkJMEY1OTQ3QTgxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0NzlCMTg3QjNCNjAwMDQzNzg1
NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU5NDdBNDE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JU
cmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYzNDNCM0IxRjA1OTkyNjAwMDNGMzA5
IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDc5
RDE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU1QkE4MUYxQkEyNUIyNzAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVCQTgyNTFCQTI1Q0ZCMDA3Q0QzM0QgLyogUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI4NCw2ICsx
MDI5MSw3IEBACiAJCQkJQzAzMzdEQUUxMjdBMjRGRTAwOEZGNEY0IC8qIFdlYkV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMDMyREJBMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENv
bnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCNUUxMTJGNjI5ODAwMzM3QkFC
IC8qIFdlYkV2ZW50RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ2MzQzQjNBMUYwNTk5
MjMwMDAzRjMwOSAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0U0Njk1MzEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0U0Njk1NTEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQUREMTEyRjVCOTMw
MDMzN0JBQiAvKiBXZWJGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>