<?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>201155</bug_id>
          
          <creation_ts>2019-08-26 15:23:03 -0700</creation_ts>
          <short_desc>Regression: ITP started doing a lot more IPC after its logic was moved to the network process</short_desc>
          <delta_ts>2019-08-26 17:21:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1565121</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-26 15:23:03 -0700</bug_when>
    <thetext>ITP does a lot more IPC that it used to since its logic was moved to the network process. Web processes used to send their statistics to the UIProcess at most every 5 seconds. However, when the logic got moved to the network process, we started notifying the network process via IPC after every sub resource load. This is bad for performance and battery life.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565127</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-26 15:32:55 -0700</bug_when>
    <thetext>Thanks for taking a stab at this, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565132</commentid>
    <comment_count>2</comment_count>
      <attachid>377278</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-26 15:48:51 -0700</bug_when>
    <thetext>Created attachment 377278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565147</commentid>
    <comment_count>3</comment_count>
      <attachid>377278</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-08-26 16:23:24 -0700</bug_when>
    <thetext>Comment on attachment 377278
Patch

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

Looks good to me. See minor comments.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Regression: ITP does a lot more IPC that it used to since its logic was moved to the network process

I think &quot;after its logic was moved&quot; makes it more clear. Otherwise, some may interpret that the move itself causes more IPC.

&gt; Source/WebCore/ChangeLog:8
&gt; +        ITP does a lot more IPC that it used to since its logic was moved to the network process. Web processes used to

since -&gt; after

&gt; Source/WebKit/ChangeLog:3
&gt; +        Regression: ITP does a lot more IPC that it used to since its logic was moved to the network process

since –&gt; after

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:125
&gt; +        scheduleNotificationIfNeeded();

We used to have a local boolean that captured whether this call to the log function had caused a statistics update or not, and only schedule a notification if so. But the generalized check for the existence of any batched up statistics is fine too. As long as m_perSessionResourceStatisticsMap.isEmpty() is performant which I assume it is.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:228
&gt; +    ResourceLoadObserver::shared().setLogUserInteractionNotificationCallback([this] (PAL::SessionID sessionID, const RegistrableDomain&amp; domain) {    ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::LogUserInteraction(sessionID, domain), 0);

I believe we used to have a code comment explaining why this particular IPC call was done directly so that others understand why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565153</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-26 16:27:50 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #3)
&gt; Comment on attachment 377278 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377278&amp;action=review
&gt; 
&gt; Looks good to me. See minor comments.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Regression: ITP does a lot more IPC that it used to since its logic was moved to the network process
&gt; 
&gt; I think &quot;after its logic was moved&quot; makes it more clear. Otherwise, some may
&gt; interpret that the move itself causes more IPC.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        ITP does a lot more IPC that it used to since its logic was moved to the network process. Web processes used to
&gt; 
&gt; since -&gt; after
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:3
&gt; &gt; +        Regression: ITP does a lot more IPC that it used to since its logic was moved to the network process
&gt; 
&gt; since –&gt; after
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadObserver.cpp:125
&gt; &gt; +        scheduleNotificationIfNeeded();
&gt; 
&gt; We used to have a local boolean that captured whether this call to the log
&gt; function had caused a statistics update or not, and only schedule a
&gt; notification if so. But the generalized check for the existence of any
&gt; batched up statistics is fine too. As long as
&gt; m_perSessionResourceStatisticsMap.isEmpty() is performant which I assume it
&gt; is.
 
I intentionally killed that boolean. Scheduling a timer is a no-op the second time since that timer has already been started.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebProcess.cpp:228
&gt; &gt; +    ResourceLoadObserver::shared().setLogUserInteractionNotificationCallback([this] (PAL::SessionID sessionID, const RegistrableDomain&amp; domain) {    ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::LogUserInteraction(sessionID, domain), 0);
&gt; 
&gt; I believe we used to have a code comment explaining why this particular IPC
&gt; call was done directly so that others understand why.

I did not see one but I will add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565158</commentid>
    <comment_count>5</comment_count>
      <attachid>377287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-26 16:36:20 -0700</bug_when>
    <thetext>Created attachment 377287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565187</commentid>
    <comment_count>6</comment_count>
      <attachid>377287</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-26 17:20:38 -0700</bug_when>
    <thetext>Comment on attachment 377287
Patch

Clearing flags on attachment: 377287

Committed r249126: &lt;https://trac.webkit.org/changeset/249126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565188</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-26 17:20:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565190</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-26 17:21:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54729534&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377278</attachid>
            <date>2019-08-26 15:48:51 -0700</date>
            <delta_ts>2019-08-26 16:36:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201155-20190826154850.patch</filename>
            <type>text/plain</type>
            <size>29611</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzljZmQxYmM3N2Q3YmRm
NDMxMmJkZTAxZDNmMjExZmYxMmJhNTMyZS4uMzE5Njg4M2QzZjZmMjU4M2JiMzE5MTRkZWZiYmY5
MzQ3NDg5MjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbjogSVRQIGRv
ZXMgYSBsb3QgbW9yZSBJUEMgdGhhdCBpdCB1c2VkIHRvIHNpbmNlIGl0cyBsb2dpYyB3YXMgbW92
ZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSVRQIGRvZXMgYSBsb3QgbW9yZSBJUEMgdGhhdCBpdCB1c2VkIHRv
IHNpbmNlIGl0cyBsb2dpYyB3YXMgbW92ZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gV2ViIHBy
b2Nlc3NlcyB1c2VkIHRvCisgICAgICAgIHNlbmQgdGhlaXIgc3RhdGlzdGljcyB0byB0aGUgVUlQ
cm9jZXNzIGF0IG1vc3QgZXZlcnkgNSBzZWNvbmRzLiBIb3dldmVyLCB3aGVuIHRoZSBsb2dpYyBn
b3QgbW92ZWQgdG8gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcywgd2Ugc3RhcnRlZCBub3Rp
ZnlpbmcgdGhlIG5ldHdvcmsgcHJvY2VzcyB2aWEgSVBDIGFmdGVyIGV2ZXJ5IHN1YiByZXNvdXJj
ZSBsb2FkLiBUaGlzIGlzIGJhZCBmb3IgcGVyZm9ybWFuY2UKKyAgICAgICAgYW5kIGJhdHRlcnkg
bGlmZS4gVGhpcyBwYXRjaCByZXN0b3JlcyB0aGUgNSBzZWNvbmQgZGVsYXkgdG8gYWRkcmVzcyB0
aGUgaXNzdWUuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlJlc291cmNlTG9hZE9ic2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJTdGF0ZSk6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisKIDIwMTktMDgtMjYgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUV10gR28gYmFjayB0byBJ
RDJEMUJpdG1hcCBhcyBvdXIgTmF0aXZlSW1hZ2UgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMjc1OTE3ZTBj
MDg5OTEyNjg0YjZhNDAyYWE4ZWNmOGMwZjY3NjdkLi44MTNiNDg1MmE1ZjA4YWM3M2FkNjZhMmU2
YzdjNjRmYzA3NzI3Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTI2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbjogSVRQ
IGRvZXMgYSBsb3QgbW9yZSBJUEMgdGhhdCBpdCB1c2VkIHRvIHNpbmNlIGl0cyBsb2dpYyB3YXMg
bW92ZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMTktMDgt
MjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ug
c3ViY2xhc3NlcyB0byBSZW1vdGVPYmplY3RSZWdpc3RyeSBmb3IgdGhlIFVJUHJvY2VzcyBhbmQg
dGhlIFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwCmluZGV4IDcyYmJkOTM3OTI3NDAzODA5YmVlZjE5NDNhNTgwMDYzYTIzZGZhNWQu
LmUzNmEyMTY3NzZjZjQwYWYwMWU4YzZhNmMzNmI3ODM3MjAzMTM4MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDgsNiArNDgsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBtaW5pbXVtTm90
aWZpY2F0aW9uSW50ZXJ2YWwgeyA1X3MgfTsKIAorUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlJlc291
cmNlTG9hZE9ic2VydmVyKCkKKyAgICA6IG1fbm90aWZpY2F0aW9uVGltZXIoKnRoaXMsICZSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSkKK3sKK30KKwog
UmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4gcmVzb3VyY2VM
b2FkT2JzZXJ2ZXI7CkBAIC03MSwyNCArNzYsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
OjpzZXRMb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2bwog
ICAgIEFTU0VSVCghbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayk7CiAg
ICAgbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOwogfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJiBjYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoIW1fbG9nV2ViU29ja2V0TG9hZGluZ05v
dGlmaWNhdGlvbkNhbGxiYWNrKTsKLSAgICBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRp
b25DYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9i
c2VydmVyOjpzZXRMb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5j
dGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYmIGNhbGxiYWNrKQotewotICAgIEFTU0VS
VCghbV9sb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayk7Ci0gICAgbV9s
b2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRMb2dTdWJyZXNvdXJjZVJl
ZGlyZWN0Tm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmIGNh
bGxiYWNrKQotewotICAgIEFTU0VSVCghbV9sb2dTdWJyZXNvdXJjZVJlZGlyZWN0Tm90aWZpY2F0
aW9uQ2FsbGJhY2spOwotICAgIG1fbG9nU3VicmVzb3VyY2VSZWRpcmVjdE5vdGlmaWNhdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci19CiAgICAgCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXMzeHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKQEAgLTEz
NSw3ICsxMjIsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxv
YWRpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICAgICB0YXJnZXRTdGF0
aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4pOwogCi0gICAg
ICAgIG1fbG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2socGFnZS0+c2Vz
c2lvbklEKCksIHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVuKTsKKyAgICAg
ICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogICAgIH0KIAogICAgIGlmIChpc1Jl
ZGlyZWN0KSB7CkBAIC0xNDQsNyArMTMxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3UKICAg
ICAgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKHBhZ2UtPnNlc3Npb25JRCgpLCB0YXJnZXREb21haW4pOwogICAg
ICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQo
cmVkaXJlY3RlZEZyb21Eb21haW4pOwogCi0gICAgICAgIG1fbG9nU3VicmVzb3VyY2VSZWRpcmVj
dE5vdGlmaWNhdGlvbkNhbGxiYWNrKHBhZ2UtPnNlc3Npb25JRCgpLCByZWRpcmVjdGVkRnJvbURv
bWFpbiwgdGFyZ2V0RG9tYWluKTsKKyAgICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRl
ZCgpOwogICAgIH0KIH0KIApAQCAtMTcxLDcgKzE1OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVS
TCYKICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAgdGFyZ2V0
U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURv
bWFpbik7CiAKLSAgICBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhz
ZXNzaW9uSUQsIHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVuKTsKKyAgICBz
Y2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMzcwLDggKzM1NywyMiBAQCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UmVnaXN0cgogICAgIHJldHVybiBhZGREb21haW5SZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQog
Cit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVk
KCkKK3sKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25DYWxsYmFjayk7CisgICAgaWYgKG1fcGVy
U2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9ub3Rp
ZmljYXRpb25UaW1lci5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IW1fbm90aWZpY2F0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9ub3RpZmljYXRpb25U
aW1lci5zdGFydE9uZVNob3QobWluaW11bU5vdGlmaWNhdGlvbkludGVydmFsKTsKK30KKwogdm9p
ZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpCiB7
CisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIG1fbm90aWZpY2F0aW9u
VGltZXIuc3RvcCgpOwogICAgIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2sodGFrZVN0YXRpc3RpY3Mo
KSk7CiB9CiAKQEAgLTQwOCw2ICs0MDksNyBAQCBhdXRvIFJlc291cmNlTG9hZE9ic2VydmVyOjp0
YWtlU3RhdGlzdGljcygpIC0+IFBlclNlc3Npb25SZXNvdXJjZUxvYWREYXRhCiAKIHZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogeworICAgIG1fbm90aWZpY2F0aW9uVGlt
ZXIuc3RvcCgpOwogICAgIG1fcGVyU2Vzc2lvblJlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigp
OwogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwLmNsZWFyKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGRkZmVlNzM4
YTMyNmFjOTFhMGU3OGM1YTkwMjJmNTljNTIxODNmOTkuLjVmMTNlMWIzMzIyOTJmMzU4ZGZmYjA4
OWQ4OTEyZGQ4NTg3YjgyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oCkBAIC03Nyw5ICs3Nyw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQZXJTZXNz
aW9uUmVzb3VyY2VMb2FkRGF0YSYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdlSWRlbnRpZmllciwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRM
b2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldExvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5j
dGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldExvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9u
PHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TG9nU3VicmVzb3VyY2VSZWRpcmVjdE5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUNlbnRy
YWxTdGF0aXN0aWNzU3RvcmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyU3RhdGUo
KTsKQEAgLTkwLDggKzg3LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIFJl
c291cmNlTG9hZE9ic2VydmVyKCk7CisKICAgICBib29sIHNob3VsZExvZyhQQUw6OlNlc3Npb25J
RCkgY29uc3Q7CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CisgICAgdm9pZCBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CiAK
ICAgICBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YSB0YWtlU3RhdGlzdGljcygpOwogCkBAIC0x
MDQsOSArMTA0LDkgQEAgcHJpdmF0ZToKICAgICBGdW5jdGlvbjx2b2lkKFBlclNlc3Npb25SZXNv
dXJjZUxvYWREYXRhKT4gbV9ub3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVy
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXJDYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpPiBtX2xvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxi
YWNrOwotICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk+IG1fbG9nV2ViU29j
a2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrOwotICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBXYWxsVGltZSk+IG1fbG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJh
Y2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiBtX2xvZ1N1YnJlc291cmNlUmVkaXJl
Y3ROb3RpZmljYXRpb25DYWxsYmFjazsKKworICAgIFRpbWVyIG1fbm90aWZpY2F0aW9uVGltZXI7
CisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIGJvb2wg
bV9zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMWI2ZWIxOWU5
MDVmZmJiOGIzNzgzZjA0YTMzOTk5MTk5MWRjYzhhOS4uZDRlYzg0YzdjN2QyZTE1YjRlNzhjMDI5
YmExNmYyMjY2N2RjMjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC05MzMsNDMgKzkzMyw2IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvCiAgICAgICAgIHNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0
SWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiB0YXJn
ZXREb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUg
bGFzdFNlZW4pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRv
IHJlc3VsdCA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRh
cmdldERvbWFpbik7Ci0gICAgdXBkYXRlTGFzdFNlZW4odGFyZ2V0RG9tYWluLCBsYXN0U2Vlbik7
Ci0KLSAgICBhdXRvIHRhcmdldERvbWFpbklEID0gcmVzdWx0LnNlY29uZDsKLSAgICBpZiAoIXJl
bGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbkV4aXN0cywg
dGFyZ2V0RG9tYWluSUQsIHRvcEZyYW1lRG9tYWluKSkgewotICAgICAgICBpbnNlcnREb21haW5S
ZWxhdGlvbnNoaXAobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLCB0YXJnZXREb21h
aW5JRCwgdG9wRnJhbWVEb21haW4pOwotICAgICAgICBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNz
aW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGly
ZWN0ZWRGcm9tRG9tYWluJiBzb3VyY2VEb21haW4sIGNvbnN0IFJlZGlyZWN0ZWRUb0RvbWFpbiYg
dGFyZ2V0RG9tYWluKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAg
YXV0byBzb3VyY2VEb21haW5SZXN1bHQgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdp
c3RyYWJsZURvbWFpbihzb3VyY2VEb21haW4pOwotICAgIGF1dG8gdGFyZ2V0RG9tYWluUmVzdWx0
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4odGFyZ2V0RG9t
YWluKTsKLQotICAgIGJvb2wgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSBmYWxzZTsKLSAgICBpZiAo
IXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9FeGlzdHMs
IHNvdXJjZURvbWFpblJlc3VsdC5zZWNvbmQsIHRhcmdldERvbWFpbikpIHsKLSAgICAgICAgaW5z
ZXJ0RG9tYWluUmVsYXRpb25zaGlwKG1fc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgc291
cmNlRG9tYWluUmVzdWx0LnNlY29uZCwgdGFyZ2V0RG9tYWluKTsKLSAgICAgICAgaXNOZXdSZWRp
cmVjdFRvRW50cnkgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgaXNOZXdSZWRpcmVjdEZyb21F
bnRyeSA9IGZhbHNlOwotICAgIGlmICghcmVsYXRpb25zaGlwRXhpc3RzKG1fc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tRXhpc3RzLCB0YXJnZXREb21haW5SZXN1bHQuc2Vjb25kLCBzb3Vy
Y2VEb21haW4pKSB7Ci0gICAgICAgIGluc2VydERvbWFpblJlbGF0aW9uc2hpcChtX3N1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwgdGFyZ2V0RG9tYWluUmVzdWx0LnNlY29uZCwgc291cmNl
RG9tYWluKTsKLSAgICAgICAgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSA9IHRydWU7Ci0gICAgfQot
Ci0gICAgaWYgKGlzTmV3UmVkaXJlY3RUb0VudHJ5IHx8IGlzTmV3UmVkaXJlY3RGcm9tRW50cnkp
Ci0gICAgICAgIHNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZOZWNlc3Nhcnko
KTsKLX0KLQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bG9nQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiBm
cm9tRG9tYWluLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYgdG9Eb21haW4pCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGE4ZTEwMTY5OTk1MjM1ODAxNTkzYTljYmQ2
NWE0OTgzMTU0MTVjYzkuLjBmYjI0YWQwNjcwNDVjOWFkMzE0ZjIzY2ZiNDQ0MGQ4YWY4NDVmZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCkBAIC05Nyw4ICs5Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0
aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25z
dCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
KSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURv
bWFpbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFN1
YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXYWxsVGltZSBsYXN0U2Vl
bikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGly
ZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRl
ZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAppbmRleCA2OGM5OTc5YTVlMzU0MjVjMWYzNmFhN2U1YzM4MWYwMzdjZmEyNGMxLi4xNGQ2
ZWYwODdiNTg3MTEzODg3NWNhNmRhMTU3ZjU5ZmIwNzgxNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtMzk2LDI5ICszOTYs
NiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bG9nRnJhbWVOYXZp
Z2F0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBzY2hlZHVsZVN0YXRpc3RpY3NQ
cm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgU3ViUmVzb3Vy
Y2VEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCBXYWxsVGltZSBsYXN0U2VlbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLQotICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21haW4pOwotICAgIHRhcmdldFN0YXRpc3Rp
Y3MubGFzdFNlZW4gPSBsYXN0U2VlbjsKLSAgICBpZiAodGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNv
dXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFpbikuaXNOZXdFbnRyeSkK
LSAgICAgICAgc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZk5lY2Vzc2FyeSgp
OwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bG9nU3VicmVz
b3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYgc291cmNlRG9tYWluLCBj
b25zdCBSZWRpcmVjdGVkVG9Eb21haW4mIHRhcmdldERvbWFpbikKLXsKLSAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8mIHJlZGlyZWN0aW5nRG9tYWluU3RhdGlzdGlj
cyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHNvdXJjZURv
bWFpbik7Ci0gICAgYm9vbCBpc05ld1JlZGlyZWN0VG9FbnRyeSA9IHJlZGlyZWN0aW5nRG9tYWlu
U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZCh0YXJnZXREb21haW4p
LmlzTmV3RW50cnk7Ci0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Ci0gICAgYm9vbCBp
c05ld1JlZGlyZWN0RnJvbUVudHJ5ID0gdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb20uYWRkKHNvdXJjZURvbWFpbikuaXNOZXdFbnRyeTsKLQotICAgIGlmIChp
c05ld1JlZGlyZWN0VG9FbnRyeSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQotICAgICAgICBz
Y2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7Ci19Ci0KIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgVG9wRnJhbWVEb21haW4mIGRvbWFpbikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaAppbmRleCAzZDk4YWQxOTZmY2Y5ZDZlZDZlNGJkOWMyMzkxNzIxZjBmMzc2Zjg1Li44Nzll
MWFmY2ZiODYyMjk3NjQ2YjUwMDgwNmZmYzRmOWEwYWEwMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0xMDMsOCArMTAzLDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9E
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4m
LCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIFdhbGxUaW1lIGxhc3RTZWVuKSBvdmVycmlkZTsKLSAgICB2b2lk
IGxvZ1N1YnJlc291cmNlUmVkaXJlY3QoY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBjb25z
dCBSZWRpcmVjdGVkVG9Eb21haW4mKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0
aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNjJlNzVkMWJmM2Y4MWNiYTM0ZTU3YTA3Y2E0
ODE5NWJkNDZiMTU4OC4uNmY2MWVkMzQzZGUyNjZhYTM1ZjllYzBkYTc0MjExMDE5MzYyYWZkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTY2LDggKzE2
Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29u
c3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmln
YXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgU3Vi
UmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdhbGxUaW1lIGxhc3RTZWVu
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGxvZ1N1YnJlc291cmNlUmVkaXJlY3QoY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2
aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAppbmRleCA0M2IzNmYxZTlkODEzYTcyZDkyZmMwOTRlZjY5NGFhZjQxMzQ1N2EwLi5mMDAxZTlk
Y2RhYmRlOWQyODFmZmI1NTVkNzNjMTI3ZTdhYzkxMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTI3LDQxICs1MjcsNiBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJgogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IFdhbGxUaW1lIGxhc3RTZWVuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIHBvc3RU
YXNrKFt0aGlzLCB0YXJnZXREb21haW4gPSB0YXJnZXREb21haW4uaXNvbGF0ZWRDb3B5KCksIHRv
cEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGxhc3RTZWVuLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZS0+bG9nU3VicmVzb3VyY2VMb2FkaW5nKHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIGxhc3RTZWVuKTsKLQotICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgdGFy
Z2V0RG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1l
IGxhc3RTZWVuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIHBvc3RUYXNrKFt0aGlz
LCB0YXJnZXREb21haW4gPSB0YXJnZXREb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9t
YWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGxhc3RTZWVuLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
bG9nU3VicmVzb3VyY2VMb2FkaW5nKHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RT
ZWVuKTsKLQotICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omxv
Z1N1YnJlc291cmNlUmVkaXJlY3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgc291cmNlRG9tYWluID0gc291cmNlRG9t
YWluLmlzb2xhdGVkQ29weSgpLCB0YXJnZXREb21haW4gPSB0YXJnZXREb21haW4uaXNvbGF0ZWRD
b3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5sb2dTdWJyZXNvdXJjZVJlZGlyZWN0KHNvdXJjZURvbWFpbiwgdGFy
Z2V0RG9tYWluKTsKLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKaW5kZXggMDc5ZjgwNWJlZWZhM2QwMWNkNTZkZjM3MmI3NTY2NDUyNmU1ZmM3
MC4uMTEwM2JmMjAyZjBlM2VhMWJiMGJmNjU0ZGJkNTAyYmRjZmVkZWU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTE4LDkgKzExOCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5
JiwgY29uc3QgVVJMJiBwYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdh
dGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSk7CiAgICAg
dm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhjb25zdCBT
dWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2FsbFRpbWUgbGFzdFNl
ZW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBsb2dTdWJyZXNvdXJj
ZUxvYWRpbmcoY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IFdhbGxUaW1lIGxhc3RTZWVuLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNv
bnN0IFJlZGlyZWN0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRl
ZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgVmVjdG9yPHN0ZDo6cGFpcjxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92
ZT4+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNGVhY2ZhMDYyZjBkMDkyYjA5YmExYjMxOTZhN2ZjZWY4ZjM2MGVkYS4uNzZm
ZjRmZWExYjI3MmYwMWZiMmNiZjNkNDA4NzhiYTZmOGIxYjI0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTY4OSwzMCArNjg5LDYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwK
ICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1dlYlNv
Y2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5s
b2dXZWJTb2NrZXRMb2FkaW5nKHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVu
LCBbXSB7IH0pOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKLXsKLSAgICBpZiAoYXV0byogbmV0
d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+bG9nU3VicmVzb3VyY2VMb2FkaW5nKHRhcmdldERvbWFpbiwgdG9wRnJhbWVE
b21haW4sIGxhc3RTZWVuLCBbXSB7IH0pOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6bG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4pCi17Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24t
PnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmxvZ1N1YnJlc291cmNlUmVkaXJlY3Qoc291cmNlRG9tYWluLCB0YXJnZXREb21haW4s
IFtdIHsgfSk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChSZXNvdXJjZUxvYWRPYnNlcnZlcjo6UGVy
U2Vzc2lvblJlc291cmNlTG9hZERhdGEmJiBzdGF0aXN0aWNzKQogewogICAgIGZvciAoYXV0byYg
aXRlciA6IHN0YXRpc3RpY3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAwNTU4ZDcx
Y2MyZmU5MWQ0NmE1MzdhZTUyM2M3OTljYzA2NWM1ODgzLi4xMzZkOTMwYTI4MzBjNjBjOGM2OWZl
ZDkwZGMwYTAwNDllNmNjNGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yMjAsOSAr
MjIwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291
cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKIAogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7Ci0gICAg
dm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pOwotICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRp
cmVjdChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9pZCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
UGVyU2Vzc2lvblJlc291cmNlTG9hZERhdGEmJik7CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
NmVlMjJkMzM0MGYwNWRmMzUyYjI3ZDA1OTJjNTc3ZDRlMzUwNTlkNS4uZDBlZmEwYjBiMmUzNTFl
MTQ3MTUwN2Y2NDgxNDY4NjJmOWNkNGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC02MSw5ICs2MSw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZW1vdmVTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBDbGVh
clBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBMb2dVc2Vy
SW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW4pCi0gICAgTG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQot
ICAgIExvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQotICAgIExvZ1N1YnJlc291
cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERv
bWFpbikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8c3RkOjpwYWly
PFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4+
PiBzdGF0aXN0aWNzKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0
b3JhZ2VBY2Nlc3MpIEFzeW5jCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51
bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bikgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwMzYw
MzJlNDI1OTc1ZTg1NzkwMTQ4NWRmOWY0OWY5ODUzOTgzZDU1Li43NzI2NzJjNDliMGJjYmU0ODVh
MGE5YzFjOGM3NjUzMzFkYTQ4OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC0yMjQsNiArMjI0LDkgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50
aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWlu
KSB7CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKKyAgICAKKyAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0TG9nVXNlckludGVyYWN0aW9uTm90
aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIHsgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpMb2dVc2VySW50ZXJhY3Rpb24oc2Vzc2lvbklELCBkb21haW4pLCAwKTsKKyAg
ICB9KTsKICNlbmRpZgogICAgIAogICAgIEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpOwpAQCAtMzk2LDI0ICszOTksNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogCiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCk7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRMb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25D
YWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbikgewotICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkxvZ1VzZXJJbnRlcmFjdGlvbihzZXNzaW9uSUQsIGRvbWFpbiksIDApOwotICAgIH0p
OwotCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldExvZ1dlYlNvY2tldExv
YWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikgewotICAgICAgICBl
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1dlYlNvY2tldExvYWRpbmcoc2Vz
c2lvbklELCB0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBsYXN0U2VlbiksIDApOwotICAg
IH0pOwotICAgIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRMb2dTdWJy
ZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbikgewot
ICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1N1YnJlc291cmNl
TG9hZGluZyhzZXNzaW9uSUQsIHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVu
KSwgMCk7Ci0gICAgfSk7Ci0KLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0
TG9nU3VicmVzb3VyY2VSZWRpcmVjdE5vdGlmaWNhdGlvbkNhbGxiYWNrKFt0aGlzXSAoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluKSB7Ci0gICAgICAgIGVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6TG9nU3VicmVzb3VyY2VSZWRpcmVjdChzZXNz
aW9uSUQsIHNvdXJjZURvbWFpbiwgdGFyZ2V0RG9tYWluKSwgMCk7Ci0gICAgfSk7Ci0jZW5kaWYK
LQogICAgIHNldFRlcm1pbmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91
dCk7CiAKICAgICByZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhwYXJhbWV0ZXJzLnBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377287</attachid>
            <date>2019-08-26 16:36:20 -0700</date>
            <delta_ts>2019-08-26 17:20:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201155-20190826163619.patch</filename>
            <type>text/plain</type>
            <size>30002</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ1NzFiYzRkNmJkZGVm
ZGI0NjQwYzYyZTY4YjA4ZTg5MjZiZWI2Yy4uNjZiN2U5YmI5Nzg0MzQ5ODUzYzgyMzE1MDExNGEy
Y2NjOTYzYjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA4LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbjogSVRQIHN0
YXJ0ZWQgZG9pbmcgYSBsb3QgbW9yZSBJUEMgYWZ0ZXIgaXRzIGxvZ2ljIHdhcyBtb3ZlZCB0byB0
aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDExNTUKKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgor
CisgICAgICAgIElUUCBzdGFydGVkIGRvaW5nIGEgbG90IG1vcmUgSVBDIGFmdGVyIGl0cyBsb2dp
YyB3YXMgbW92ZWQgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gV2ViIHByb2Nlc3NlcyB1c2VkIHRv
CisgICAgICAgIHNlbmQgdGhlaXIgc3RhdGlzdGljcyB0byB0aGUgVUlQcm9jZXNzIGF0IG1vc3Qg
ZXZlcnkgNSBzZWNvbmRzLiBIb3dldmVyLCB3aGVuIHRoZSBsb2dpYyBnb3QgbW92ZWQgdG8gdGhl
IG5ldHdvcmsKKyAgICAgICAgcHJvY2Vzcywgd2Ugc3RhcnRlZCBub3RpZnlpbmcgdGhlIG5ldHdv
cmsgcHJvY2VzcyB2aWEgSVBDIGFmdGVyIGV2ZXJ5IHN1YiByZXNvdXJjZSBsb2FkLiBUaGlzIGlz
IGJhZCBmb3IgcGVyZm9ybWFuY2UKKyAgICAgICAgYW5kIGJhdHRlcnkgbGlmZS4gVGhpcyBwYXRj
aCByZXN0b3JlcyB0aGUgNSBzZWNvbmQgZGVsYXkgdG8gYWRkcmVzcyB0aGUgaXNzdWUuCisKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlJlc291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nV2ViU29ja2V0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2NoZWR1bGVO
b3RpZmljYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y2xlYXJTdGF0ZSk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmg6CisKIDIwMTktMDgtMjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgY29tcHV0YXRpb24gb2YgQWJzb2x1
dGVDbGlwUmVjdHMgY2xpcCByZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZWFhYzE5MTJiZDRjMjJlNjNmOWNm
MzE4OTM5NzNlOTcwNzI2NTI4Li5mYjVjZGRhODM3ZGE3ZGJhYzUyMDk4MDBhZjgxNzI4OTcxYzZj
NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTI2ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbjogSVRQIHN0YXJ0ZWQgZG9p
bmcgYSBsb3QgbW9yZSBJUEMgYWZ0ZXIgaXRzIGxvZ2ljIHdhcyBtb3ZlZCB0byB0aGUgbmV0d29y
ayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDExNTUKKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE5LTA4LTI2ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKGlPUyAxMyk6IFRl
c3RzIHRoYXQgc2ltdWxhdGUgbXVsdGlwbGUgYmFjay10by1iYWNrIHNpbmdsZSB0YXBzIGZhaWwg
b3IgdGltZSBvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwCmluZGV4IDcyYmJkOTM3OTI3NDAzODA5YmVlZjE5NDNhNTgwMDYzYTIzZGZhNWQuLjlj
YjMxNmU5ZDE2NmY2N2NiNzY2MWRjZmUyNzNhNjY2NTMxZmY1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNDgsNiArNDgsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBtaW5pbXVtTm90aWZp
Y2F0aW9uSW50ZXJ2YWwgeyA1X3MgfTsKIAorUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlJlc291cmNl
TG9hZE9ic2VydmVyKCkKKyAgICA6IG1fbm90aWZpY2F0aW9uVGltZXIoKnRoaXMsICZSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSkKK3sKK30KKwogUmVz
b3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4gcmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI7CkBAIC03MSwyNCArNzYsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
ZXRMb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2bwogICAg
IEFTU0VSVCghbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayk7CiAgICAg
bV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOwogfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRMb2dXZWJTb2NrZXRMb2Fk
aW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4mJiBjYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoIW1fbG9nV2ViU29ja2V0TG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrKTsKLSAgICBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25D
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzZXRMb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYmIGNhbGxiYWNrKQotewotICAgIEFTU0VSVCgh
bV9sb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayk7Ci0gICAgbV9sb2dT
dWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRMb2dTdWJyZXNvdXJjZVJlZGly
ZWN0Tm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmIGNhbGxi
YWNrKQotewotICAgIEFTU0VSVCghbV9sb2dTdWJyZXNvdXJjZVJlZGlyZWN0Tm90aWZpY2F0aW9u
Q2FsbGJhY2spOwotICAgIG1fbG9nU3VicmVzb3VyY2VSZWRpcmVjdE5vdGlmaWNhdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci19CiAgICAgCiBzdGF0aWMgaW5saW5lIGJvb2wgaXMz
eHhSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKQEAgLTEzNSw3
ICsxMjIsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjZUxvYWRp
bmcoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICAgICB0YXJnZXRTdGF0aXN0
aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4pOwogCi0gICAgICAg
IG1fbG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2socGFnZS0+c2Vzc2lv
bklEKCksIHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVuKTsKKyAgICAgICAg
c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogICAgIH0KIAogICAgIGlmIChpc1JlZGly
ZWN0KSB7CkBAIC0xNDQsNyArMTMxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
U3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3UKICAgICAg
ICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKHBhZ2UtPnNlc3Npb25JRCgpLCB0YXJnZXREb21haW4pOwogICAgICAg
ICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbS5hZGQocmVk
aXJlY3RlZEZyb21Eb21haW4pOwogCi0gICAgICAgIG1fbG9nU3VicmVzb3VyY2VSZWRpcmVjdE5v
dGlmaWNhdGlvbkNhbGxiYWNrKHBhZ2UtPnNlc3Npb25JRCgpLCByZWRpcmVjdGVkRnJvbURvbWFp
biwgdGFyZ2V0RG9tYWluKTsKKyAgICAgICAgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgp
OwogICAgIH0KIH0KIApAQCAtMTcxLDcgKzE1OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYK
ICAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RTZWVuID0gbGFzdFNlZW47CiAgICAgdGFyZ2V0U3Rh
dGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLmFkZCh0b3BGcmFtZURvbWFp
bik7CiAKLSAgICBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhzZXNz
aW9uSUQsIHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIGxhc3RTZWVuKTsKKyAgICBzY2hl
ZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQpAQCAtMjA4LDYgKzE5NSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3Qg
RG9jCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBXZSBub3RpZnkgcmlnaHQgYXdheSBpbiBj
YXNlIG9mIGEgdXNlciBpbnRlcmFjdGlvbiBpbnN0ZWFkIG9mIHdhaXRpbmcgdGhlIHVzdWFsIDUg
c2Vjb25kcyBiZWNhdXNlIHdlIHdhbnQKKyAgICAvLyB0byB1cGRhdGUgY29va2llIGJsb2NraW5n
IHN0YXRlIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCiAgICAgbV9sb2dVc2VySW50ZXJhY3Rpb25O
b3RpZmljYXRpb25DYWxsYmFjayhkb2N1bWVudC5zZXNzaW9uSUQoKSwgdG9wRnJhbWVEb21haW4p
OwogI2VuZGlmCiAKQEAgLTM3MCw4ICszNTksMjIgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHIK
ICAgICByZXR1cm4gYWRkRG9tYWluUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAordm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpCit7Cisg
ICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIGlmIChtX3BlclNlc3Npb25S
ZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fbm90aWZpY2F0aW9u
VGltZXIuc3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX25vdGlm
aWNhdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fbm90aWZpY2F0aW9uVGltZXIuc3Rh
cnRPbmVTaG90KG1pbmltdW1Ob3RpZmljYXRpb25JbnRlcnZhbCk7Cit9CisKIHZvaWQgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3RvcmUoKQogeworICAgIEFT
U0VSVChtX25vdGlmaWNhdGlvbkNhbGxiYWNrKTsKKyAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0
b3AoKTsKICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrKHRha2VTdGF0aXN0aWNzKCkpOwogfQog
CkBAIC00MDgsNiArNDExLDcgQEAgYXV0byBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRp
c3RpY3MoKSAtPiBQZXJTZXNzaW9uUmVzb3VyY2VMb2FkRGF0YQogCiB2b2lkIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpjbGVhclN0YXRlKCkKIHsKKyAgICBtX25vdGlmaWNhdGlvblRpbWVyLnN0b3Ao
KTsKICAgICBtX3BlclNlc3Npb25SZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKICAgICBt
X2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcC5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBkZGZlZTczOGEzMjZhYzkx
YTBlNzhjNWE5MDIyZjU5YzUyMTgzZjk5Li41ZjEzZTFiMzMyMjkyZjM1OGRmZmIwODlkODkxMmRk
ODU4N2I4MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaApAQCAtNzcsOSArNzcsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUGVyU2Vzc2lvblJlc291
cmNlTG9hZERhdGEmJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlcklu
dGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRMb2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9p
ZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRM
b2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgV2FsbFRpbWUpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1N1
YnJlc291cmNlUmVkaXJlY3ROb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVDZW50cmFsU3RhdGlz
dGljc1N0b3JlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclN0YXRlKCk7CkBAIC05
MCw4ICs4NywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcigpOworCiAgICAgYm9vbCBzaG91bGRMb2coUEFMOjpTZXNzaW9uSUQpIGNvbnN0
OwogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpOworICAgIHZvaWQgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwogCiAgICAgUGVy
U2Vzc2lvblJlc291cmNlTG9hZERhdGEgdGFrZVN0YXRpc3RpY3MoKTsKIApAQCAtMTA0LDkgKzEw
NCw5IEBAIHByaXZhdGU6CiAgICAgRnVuY3Rpb248dm9pZChQZXJTZXNzaW9uUmVzb3VyY2VMb2Fk
RGF0YSk+IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdlSWRlbnRpZmllciwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2Fs
bGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmljYXRpb25DYWxsYmFjazsKLSAg
ICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1dlYlNvY2tldExvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjazsKLSAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2Fs
bFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrOwotICAg
IEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dTdWJyZXNvdXJjZVJlZGlyZWN0Tm90aWZp
Y2F0aW9uQ2FsbGJhY2s7CisKKyAgICBUaW1lciBtX25vdGlmaWNhdGlvblRpbWVyOworCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgdWludDY0X3QgbV9sb2dnaW5nQ291bnRlciB7IDAgfTsKICAgICBib29sIG1fc2hvdWxk
TG9nVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDFiNmViMTllOTA1ZmZiYjhi
Mzc4M2YwNGEzMzk5OTE5OTFkY2M4YTkuLmQ0ZWM4NGM3YzdkMmUxNWI0ZTc4YzAyOWJhMTZmMjI2
NjdkYzIzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcApAQCAtOTMzLDQzICs5MzMsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgUmVnaXN0cmFi
bGVEbwogICAgICAgICBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNz
YXJ5KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omxv
Z1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgdGFyZ2V0RG9tYWlu
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVu
KQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgYXV0byByZXN1bHQg
PSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21h
aW4pOwotICAgIHVwZGF0ZUxhc3RTZWVuKHRhcmdldERvbWFpbiwgbGFzdFNlZW4pOwotCi0gICAg
YXV0byB0YXJnZXREb21haW5JRCA9IHJlc3VsdC5zZWNvbmQ7Ci0gICAgaWYgKCFyZWxhdGlvbnNo
aXBFeGlzdHMobV9zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5FeGlzdHMsIHRhcmdldERv
bWFpbklELCB0b3BGcmFtZURvbWFpbikpIHsKLSAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25z
aGlwKG1fc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucywgdGFyZ2V0RG9tYWluSUQsIHRv
cEZyYW1lRG9tYWluKTsKLSAgICAgICAgc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVl
c3RJZk5lY2Vzc2FyeSgpOwotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bG9nU3VicmVzb3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJv
bURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mIHRhcmdldERv
bWFpbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGF1dG8gc291
cmNlRG9tYWluUmVzdWx0ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVE
b21haW4oc291cmNlRG9tYWluKTsKLSAgICBhdXRvIHRhcmdldERvbWFpblJlc3VsdCA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHRhcmdldERvbWFpbik7Ci0K
LSAgICBib29sIGlzTmV3UmVkaXJlY3RUb0VudHJ5ID0gZmFsc2U7Ci0gICAgaWYgKCFyZWxhdGlv
bnNoaXBFeGlzdHMobV9zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvRXhpc3RzLCBzb3VyY2VE
b21haW5SZXN1bHQuc2Vjb25kLCB0YXJnZXREb21haW4pKSB7Ci0gICAgICAgIGluc2VydERvbWFp
blJlbGF0aW9uc2hpcChtX3N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHNvdXJjZURvbWFp
blJlc3VsdC5zZWNvbmQsIHRhcmdldERvbWFpbik7Ci0gICAgICAgIGlzTmV3UmVkaXJlY3RUb0Vu
dHJ5ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSBm
YWxzZTsKLSAgICBpZiAoIXJlbGF0aW9uc2hpcEV4aXN0cyhtX3N1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzRnJvbUV4aXN0cywgdGFyZ2V0RG9tYWluUmVzdWx0LnNlY29uZCwgc291cmNlRG9tYWlu
KSkgewotICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXAobV9zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb20sIHRhcmdldERvbWFpblJlc3VsdC5zZWNvbmQsIHNvdXJjZURvbWFpbik7
Ci0gICAgICAgIGlzTmV3UmVkaXJlY3RGcm9tRW50cnkgPSB0cnVlOwotICAgIH0KLQotICAgIGlm
IChpc05ld1JlZGlyZWN0VG9FbnRyeSB8fCBpc05ld1JlZGlyZWN0RnJvbUVudHJ5KQotICAgICAg
ICBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7Ci19Ci0K
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYgZnJvbURvbWFp
biwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mIHRvRG9tYWluKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaAppbmRleCBhOGUxMDE2OTk5NTIzNTgwMTU5M2E5Y2JkNjVhNDk4MzE1
NDE1Y2M5Li4wZmIyNGFkMDY3MDQ1YzlhZDMxNGYyM2NmYjQ0NDBkOGFmODQ1ZmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAt
OTcsOCArOTcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdh
dGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBv
dmVycmlkZTsKLSAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2FsbFRpbWUgbGFzdFNlZW4pIG92ZXJy
aWRlOwotICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChjb25zdCBSZWRpcmVjdGVkRnJv
bURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRUb0RvbWFpbiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBOYXZpZ2F0ZWRGcm9tRG9t
YWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xl
YXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5k
ZXggNjhjOTk3OWE1ZTM1NDI1YzFmMzZhYTdlNWMzODFmMDM3Y2ZhMjRjMS4uMTRkNmVmMDg3YjU4
NzExMzg4NzVjYTZkYTE1N2Y1OWZiMDc4MTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTM5NiwyOSArMzk2LDYgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihj
b25zdCBSZWdpc3RyYWJsZURvbWEKICAgICAgICAgc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2lu
Z1JlcXVlc3RJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFN1YlJlc291cmNlRG9tYWlu
JiB0YXJnZXREb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2Fs
bFRpbWUgbGFzdFNlZW4pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAg
ICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVn
aXN0cmFibGVEb21haW4odGFyZ2V0RG9tYWluKTsKLSAgICB0YXJnZXRTdGF0aXN0aWNzLmxhc3RT
ZWVuID0gbGFzdFNlZW47Ci0gICAgaWYgKHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWlucy5hZGQodG9wRnJhbWVEb21haW4pLmlzTmV3RW50cnkpCi0gICAgICAg
IHNjaGVkdWxlU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWZOZWNlc3NhcnkoKTsKLX0KLQot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmxvZ1N1YnJlc291cmNlUmVk
aXJlY3QoY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3QgUmVk
aXJlY3RlZFRvRG9tYWluJiB0YXJnZXREb21haW4pCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICBhdXRvJiByZWRpcmVjdGluZ0RvbWFpblN0YXRpc3RpY3MgPSBlbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihzb3VyY2VEb21haW4pOwot
ICAgIGJvb2wgaXNOZXdSZWRpcmVjdFRvRW50cnkgPSByZWRpcmVjdGluZ0RvbWFpblN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUby5hZGQodGFyZ2V0RG9tYWluKS5pc05ld0Vu
dHJ5OwotICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JSZWdpc3RyYWJsZURvbWFpbih0YXJnZXREb21haW4pOwotICAgIGJvb2wgaXNOZXdSZWRp
cmVjdEZyb21FbnRyeSA9IHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNGcm9tLmFkZChzb3VyY2VEb21haW4pLmlzTmV3RW50cnk7Ci0KLSAgICBpZiAoaXNOZXdSZWRp
cmVjdFRvRW50cnkgfHwgaXNOZXdSZWRpcmVjdEZyb21FbnRyeSkKLSAgICAgICAgc2NoZWR1bGVT
dGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZk5lY2Vzc2FyeSgpOwotfQotCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiBkb21haW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5k
ZXggM2Q5OGFkMTk2ZmNmOWQ2ZWQ2ZTRiZDljMjM5MTcyMWYwZjM3NmY4NS4uODc5ZTFhZmNmYjg2
MjI5NzY0NmI1MDA4MDZmZmM0ZjlhMGFhMDM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtMTAzLDggKzEwMyw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBp
c1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJ
bnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgbG9n
U3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBXYWxsVGltZSBsYXN0U2Vlbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dTdWJy
ZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZFRvRG9tYWluJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRU
b0RvbWFpbiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCmluZGV4IDYyZTc1ZDFiZjNmODFjYmEzNGU1N2EwN2NhNDgxOTViZDQ2
YjE1ODguLjZmNjFlZDM0M2RlMjY2YWEzNWY5ZWMwZGE3NDIxMTAxOTM2MmFmZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE2Niw4ICsxNjYsNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9t
RG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGNvbnN0IFN1YlJlc291cmNl
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXYWxsVGltZSBsYXN0U2VlbikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KGNvbnN0IFJlZGlyZWN0ZWRG
cm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRlZEZy
b21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXgg
NDNiMzZmMWU5ZDgxM2E3MmQ5MmZjMDk0ZWY2OTRhYWY0MTM0NTdhMC4uZjAwMWU5ZGNkYWJkZTlk
MjgxZmZiNTU1ZDczYzEyN2U3YWM5MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTUyNyw0MSArNTI3LDYgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdl
dERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGlt
ZSBsYXN0U2VlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBwb3N0VGFzayhbdGhp
cywgdGFyZ2V0RG9tYWluID0gdGFyZ2V0RG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURv
bWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBsYXN0U2VlbiwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUt
PmxvZ1N1YnJlc291cmNlTG9hZGluZyh0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBsYXN0
U2Vlbik7Ci0KLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjps
b2dTdWJyZXNvdXJjZUxvYWRpbmcoY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHRhcmdldERvbWFp
biwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vl
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgdGFyZ2V0
RG9tYWluID0gdGFyZ2V0RG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRv
cEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBsYXN0U2VlbiwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1f
c3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmxvZ1N1YnJl
c291cmNlTG9hZGluZyh0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBsYXN0U2Vlbik7Ci0K
LSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dTdWJyZXNv
dXJjZVJlZGlyZWN0KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgcG9zdFRhc2soW3RoaXMsIHNvdXJjZURvbWFpbiA9IHNvdXJjZURvbWFpbi5pc29s
YXRlZENvcHkoKSwgdGFyZ2V0RG9tYWluID0gdGFyZ2V0RG9tYWluLmlzb2xhdGVkQ29weSgpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZS0+bG9nU3VicmVzb3VyY2VSZWRpcmVjdChzb3VyY2VEb21haW4sIHRhcmdldERvbWFp
bik7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgIH0pOwotfQotCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVXNl
ckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCmluZGV4IDA3OWY4MDViZWVmYTNkMDFjZDU2ZGYzNzJiNzU2NjQ1MjZlNWZjNzAuLjExMDNi
ZjIwMmYwZTNlYTFiYjBiZjY1NGRiZDUwMmJkY2ZlZGVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTExOCw5ICsxMTgsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYsIGNvbnN0
IFVSTCYgcGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVVJM
JiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdh
dGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21E
b21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpOwogICAgIHZvaWQgbG9n
VXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoY29uc3QgU3ViUmVzb3Vy
Y2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdhbGxUaW1lIGxhc3RTZWVuLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5n
KGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXYWxsVGlt
ZSBsYXN0U2VlbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGxvZ1N1
YnJlc291cmNlUmVkaXJlY3QoY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBjb25zdCBSZWRp
cmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBOYXZpZ2F0ZWRGcm9tRG9t
YWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURh
dGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFZlY3Rv
cjxzdGQ6OnBhaXI8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+PiYmLCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDRlYWNmYTA2MmYwZDA5MmIwOWJhMWIzMTk2YTdmY2VmOGYzNjBlZGEuLjc2ZmY0ZmVhMWIy
NzJmMDFmYjJjYmYzZDQwODc4YmE2ZjhiMWIyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC02ODksMzAgKzY4OSw2IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgfQog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dXZWJTb2NrZXRMb2Fk
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRh
cmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxs
VGltZSBsYXN0U2VlbikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBuZXR3b3Jr
UHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nV2ViU29j
a2V0TG9hZGluZyh0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBsYXN0U2VlbiwgW10geyB9
KTsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1N1
YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pCi17Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MtPmxvZ1N1YnJlc291cmNlTG9hZGluZyh0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBs
YXN0U2VlbiwgW10geyB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmxvZ1N1YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgdGFyZ2V0RG9tYWluKQotewotICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5s
b2dTdWJyZXNvdXJjZVJlZGlyZWN0KHNvdXJjZURvbWFpbiwgdGFyZ2V0RG9tYWluLCBbXSB7IH0p
OwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlBlclNlc3Npb25S
ZXNvdXJjZUxvYWREYXRhJiYgc3RhdGlzdGljcykKIHsKICAgICBmb3IgKGF1dG8mIGl0ZXIgOiBz
dGF0aXN0aWNzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMDU1OGQ3MWNjMmZlOTFk
NDZhNTM3YWU1MjNjNzk5Y2MwNjVjNTg4My4uMTM2ZDkzMGEyODMwYzYwYzhjNjlmZWQ5MGRjMGEw
MDQ5ZTZjYzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjIwLDkgKzIyMCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAg
ICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKTsKLSAgICB2b2lkIGxvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pOwotICAgIHZvaWQgbG9n
U3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IFdhbGxUaW1lIGxhc3RTZWVuKTsKLSAgICB2b2lkIGxvZ1N1YnJlc291cmNlUmVkaXJlY3QoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4pOwogICAgIHZvaWQgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OlBlclNlc3Np
b25SZXNvdXJjZUxvYWREYXRhJiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZlZTIyZDMz
NDBmMDVkZjM1MmIyN2QwNTkyYzU3N2Q0ZTM1MDU5ZDUuLmQwZWZhMGIwYjJlMzUxZTE0NzE1MDdm
NjQ4MTQ2ODYyZjljZDRmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtNjEsOSArNjEsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgQ2xlYXJQYWdlU3Bl
Y2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
ZG9tYWluKQotICAgIExvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKLSAgICBMb2dT
dWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRv
cEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKLSAgICBMb2dTdWJyZXNvdXJjZVJlZGly
ZWN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
c291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPHN0ZDo6cGFpcjxQQUw6OlNl
c3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+Pj4gc3RhdGlz
dGljcykKICAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNj
ZXNzKSBBc3luYwogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoZW51bTpib29s
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMDM2MDMyZTQyNTk3
NWU4NTc5MDE0ODVkZjlmNDlmOTg1Mzk4M2Q1NS4uNzcyNjcyYzQ5YjBiY2JlNDg1YTBhOWMxYzhj
NzY1MzMxZGE0ODk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMjI0LDYgKzIyNCw5IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
Q2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbikgewogICAg
ICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9w
ZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAgfSk7CisgICAgCisgICAgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldExvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNhdGlv
bkNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluKSB7ICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6TG9nVXNlckludGVyYWN0aW9uKHNlc3Npb25JRCwgZG9tYWluKSwgMCk7CisgICAgfSk7CiAj
ZW5kaWYKICAgICAKICAgICBHaWdhY2FnZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKQEAgLTM5NiwyNCArMzk5LDYgQEAgdm9pZCBXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIAogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogCi0j
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkuc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2so
W3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4pIHsKLSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpM
b2dVc2VySW50ZXJhY3Rpb24oc2Vzc2lvbklELCBkb21haW4pLCAwKTsKLSAgICB9KTsKLQotICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRMb2dXZWJTb2NrZXRMb2FkaW5nTm90
aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pIHsKLSAgICAgICAgZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2dXZWJTb2NrZXRMb2FkaW5nKHNlc3Npb25JRCwg
dGFyZ2V0RG9tYWluLCB0b3BGcmFtZURvbWFpbiwgbGFzdFNlZW4pLCAwKTsKLSAgICB9KTsKLSAg
ICAKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0TG9nU3VicmVzb3VyY2VM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pIHsKLSAgICAgICAg
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2dTdWJyZXNvdXJjZUxvYWRpbmco
c2Vzc2lvbklELCB0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBsYXN0U2VlbiksIDApOwot
ICAgIH0pOwotCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldExvZ1N1YnJl
c291cmNlUmVkaXJlY3ROb3RpZmljYXRpb25DYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbikgewotICAgICAgICBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkxvZ1N1YnJlc291cmNlUmVkaXJlY3Qoc2Vzc2lvbklELCBz
b3VyY2VEb21haW4sIHRhcmdldERvbWFpbiksIDApOwotICAgIH0pOwotI2VuZGlmCi0KICAgICBz
ZXRUZXJtaW5hdGlvblRpbWVvdXQocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpOwogCiAg
ICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMocGFyYW1ldGVycy5wbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>