<?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>210297</bug_id>
          
          <creation_ts>2020-04-09 13:00:50 -0700</creation_ts>
          <short_desc>First render after a process swap does not use accelerated rendering</short_desc>
          <delta_ts>2020-04-10 14:00:05 -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>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>nham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1639804</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:00:50 -0700</bug_when>
    <thetext>First render after a process swap does not use accelerated rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639805</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:01:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/61432515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639807</commentid>
    <comment_count>2</comment_count>
      <attachid>395993</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:02:12 -0700</bug_when>
    <thetext>Created attachment 395993
Proof of concept fix

I have a proof of concept that seems to be the issue (would need some cleanup though). I am uploading the gather early feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639824</commentid>
    <comment_count>3</comment_count>
      <attachid>395997</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:27:39 -0700</bug_when>
    <thetext>Created attachment 395997
Proof of concept fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639829</commentid>
    <comment_count>4</comment_count>
      <attachid>395998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:29:56 -0700</bug_when>
    <thetext>Created attachment 395998
Proof of concept fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639830</commentid>
    <comment_count>5</comment_count>
      <attachid>395999</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:31:02 -0700</bug_when>
    <thetext>Created attachment 395999
Proof of concept fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639847</commentid>
    <comment_count>6</comment_count>
      <attachid>396004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 13:50:12 -0700</bug_when>
    <thetext>Created attachment 396004
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639860</commentid>
    <comment_count>7</comment_count>
      <attachid>396006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 14:05:37 -0700</bug_when>
    <thetext>Created attachment 396006
WIP Patch

Ok, I did a decent amount of cleanup and it appears to be working. Any early feedback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639869</commentid>
    <comment_count>8</comment_count>
      <attachid>396010</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-09 14:22:16 -0700</bug_when>
    <thetext>Created attachment 396010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639980</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-09 17:38:56 -0700</bug_when>
    <thetext>Are the EWS crashes in viewgesturecontroller real?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640159</commentid>
    <comment_count>10</comment_count>
      <attachid>396010</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-04-10 07:31:49 -0700</bug_when>
    <thetext>Comment on attachment 396010
Patch

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

Good idea!

&gt; Source/WebKit/ChangeLog:26
&gt; +        2. In the UIProcess, when we get the DrawingAreaProxy::EnterAcceleratedCompositingMode
&gt; +           IPC and we already have a root layer, we add the new one behind the existing one
&gt; +           instead of replacing the existing one. As a result, the new layer will get
&gt; +           accelerated compositing but will not be visible on screen yet.

I wonder if there are cases with transparent layers or missing tiles where this could lead to both pages being partially visible at the same time.

Maybe a stronger hiding strategy is needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640169</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-10 08:06:29 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; Are the EWS crashes in viewgesturecontroller real?

EWS is green now so I guess not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640170</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-10 08:07:06 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #10)
&gt; Comment on attachment 396010 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396010&amp;action=review
&gt; 
&gt; Good idea!
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:26
&gt; &gt; +        2. In the UIProcess, when we get the DrawingAreaProxy::EnterAcceleratedCompositingMode
&gt; &gt; +           IPC and we already have a root layer, we add the new one behind the existing one
&gt; &gt; +           instead of replacing the existing one. As a result, the new layer will get
&gt; &gt; +           accelerated compositing but will not be visible on screen yet.
&gt; 
&gt; I wonder if there are cases with transparent layers or missing tiles where
&gt; this could lead to both pages being partially visible at the same time.
&gt; 
&gt; Maybe a stronger hiding strategy is needed?

Tim / Simon, what do you think? Can I land as is or do you think we need a better hiding strategy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640244</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-10 10:25:03 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to Antti Koivisto from comment #10)
&gt; &gt; Comment on attachment 396010 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=396010&amp;action=review
&gt; &gt; 
&gt; &gt; Good idea!
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:26
&gt; &gt; &gt; +        2. In the UIProcess, when we get the DrawingAreaProxy::EnterAcceleratedCompositingMode
&gt; &gt; &gt; +           IPC and we already have a root layer, we add the new one behind the existing one
&gt; &gt; &gt; +           instead of replacing the existing one. As a result, the new layer will get
&gt; &gt; &gt; +           accelerated compositing but will not be visible on screen yet.
&gt; &gt; 
&gt; &gt; I wonder if there are cases with transparent layers or missing tiles where
&gt; &gt; this could lead to both pages being partially visible at the same time.
&gt; &gt; 
&gt; &gt; Maybe a stronger hiding strategy is needed?
&gt; 
&gt; Tim / Simon, what do you think? Can I land as is or do you think we need a
&gt; better hiding strategy?

We do. WKWebViews can be transparent, which allows transparent page contents, and this hack would make your hidden views visible.

Maybe move them offscreen? Or set layer.hidden (checking to see whether that cuts of painting, which we don&apos;t want).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640247</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-04-10 10:26:13 -0700</bug_when>
    <thetext>There&apos;s a menu item in MiniBrowser to toggle on transparent web views. Navigate from a page with no root background color; you shouldn&apos;t see the new page behind the old one.

Ideally this would be testable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640296</commentid>
    <comment_count>15</comment_count>
      <attachid>396111</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-04-10 11:48:19 -0700</bug_when>
    <thetext>Created attachment 396111
test case for drawInContext: on hidden layer

Based on code inspection of CALayer.mm and this attached test case, it seems like -drawInContext: still gets called on a layer even if it&apos;s hidden. But we could ask the CA maintainer to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640299</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-10 12:07:54 -0700</bug_when>
    <thetext>(In reply to Ben Nham from comment #15)
&gt; Created attachment 396111 [details]
&gt; test case for drawInContext: on hidden layer
&gt; 
&gt; Based on code inspection of CALayer.mm and this attached test case, it seems
&gt; like -drawInContext: still gets called on a layer even if it&apos;s hidden. But
&gt; we could ask the CA maintainer to be sure.

Yes, I have also verified in Safari that marking the layer as hidden does not prevent painting or hardware acceleration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640301</commentid>
    <comment_count>17</comment_count>
      <attachid>396112</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-10 12:14:04 -0700</bug_when>
    <thetext>Created attachment 396112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640336</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-10 13:30:08 -0700</bug_when>
    <thetext>Committed r259898: &lt;https://trac.webkit.org/changeset/259898&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396112.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395993</attachid>
            <date>2020-04-09 13:02:12 -0700</date>
            <delta_ts>2020-04-09 13:27:39 -0700</delta_ts>
            <desc>Proof of concept fix</desc>
            <filename>210297_wip.patch</filename>
            <type>text/plain</type>
            <size>16098</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA3ZjlkOGUxOWJlOC4uZDg5YTY0ZTMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xMjEsNiArMTIyLDExIEBAIC0gKHZvaWQp
ZGlzcGxheQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
CisgICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFjZS1iYWNr
ZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdoaWNoIGlz
IGNvbmZ1c2luZy4KKyAgICAvLyBTbyB0byBrbm93IGlmIHdlJ3JlIGRyYXdpbmcgb24gdGhlIENQ
VSBvciBHUFUsIGp1c3QgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSByZWd1bGFyIG9sZCBiaXRtYXAg
Y29udGV4dC4KKyAgICBib29sIHVzZXNDUFVEcmF3aW5nID0gQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKKyAgICBXVEZMb2dBbHdheXMoIldlYlNpbXBs
ZUxheWVyICVwIHJlcXVlc3RlZCBHUFUgZHJhd2luZzogJWQgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIHNlbGYuYWNjZWxlcmF0ZXNEcmF3aW5nLCAhdXNlc0NQVURyYXdpbmcpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IGNiN2ZiZjkzZTMwLi4zODY3OTQ2OTdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC00MzIsNiArNDMyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKENBTGF5ZXIgKik7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICopOwogICAgIENBTGF5ZXIgKmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFpbFZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc2ZGZm
ZmU3M2NjLi4xZGQ2ZTAzZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTM4MTEsNiArMzgxMSwzMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsK
ICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICBpZiAoIW1fcm9v
dExheWVyKQorICAgICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXllcjsKKworICAgIGlmIChtX3Ro
dW1ibmFpbFZpZXcpIHsKKyAgICAgICAgdXBkYXRlVGh1bWJuYWlsVmlld0xheWVyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIFdURkxvZ0Fsd2F5cygi
JXAgLSBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjogJXAiLCB0aGlzLCByb290
TGF5ZXIpOworICAgIGlmIChyb290TGF5ZXIpCisgICAgICAgIFtbbV9sYXllckhvc3RpbmdWaWV3
IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKyAgICBlbHNlCisg
ICAgICAgW21fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl0uc3VibGF5ZXJzID0gbmlsOworCisgICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqcm9vdExheWVyKQor
eworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwogICAgIG1fcm9vdExh
eWVyID0gcm9vdExheWVyOwogCiAgICAgaWYgKG1fdGh1bWJuYWlsVmlldykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCA5ZTQ2ZmNhMDM5NC4u
ZTNhNzU3NjNiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuY3BwCkBAIC00OCw2ICs0OCw3IEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdpbmdBcmVhUHJv
eHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAgLCBt
X3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEcmF3
aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNlbmRpZgog
eworICAgIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKTsKIH0KIAogRHJhd2luZ0FyZWFQcm94eTo6
fkRyYXdpbmdBcmVhUHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCmluZGV4IGQ1MTE5MjY2NDkwLi41YjBiOGRlZTk4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6
CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVh
bCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgLyogYmFja2lu
Z1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNr
aW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaCh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0
ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdlb21ldHJ5KCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGI4YjUxN2VmZDhkLi5iY2E2MDU2ZWE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiBt
ZXNzYWdlcyAtPiBEcmF3aW5nQXJlYVByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIEVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2Vi
S2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRy
ZWVDb250ZXh0IGNvbnRleHQpCisgICAgRGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IGJhY2tp
bmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQogICAgIERp
c3BhdGNoUHJlc2VudGF0aW9uQ2FsbGJhY2tzQWZ0ZXJGbHVzaGluZ0xheWVycyhWZWN0b3I8V2Vi
S2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcyk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhMGI3MDNjMmRmZC4uOGE5ZDljNmJj
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM1MCw2ICszNTAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheWVyRmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVj
dGlvbikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAppbmRleCBjODZjZTgxMWMxMS4uZGIzMjk2ZGYwNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBUElXZWJzaXRl
UG9saWNpZXMuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCkBAIC05MSw2ICs5Miw5IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92
aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAK
ICAgICBpbml0aWFsaXplV2ViUGFnZSh3ZWJzaXRlUG9saWNpZXMpOwogCisgICAgLy9hdXRvIGFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCA9IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4o
QWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CisgICAgLy9zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fcGFnZS5hY3Rpdml0eVN0YXRlKCksIGFjdGl2aXR5
U3RhdGVDaGFuZ2VJRCwgeyB9KSk7CisKICAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigp
LmRpZENyZWF0ZVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIxNjYzZTljYmEwLi43MjI3NTc1MjdhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDQyLDcgKzEwNDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEoc3RkOjp1bmlxdWVfcHRyPERy
YXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZQogICAgIGlmICghbV9kcmF3aW5nQXJlYSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9kcmF3aW5nQXJlYS0+c3RhcnRSZWNlaXZpbmdNZXNzYWdl
cygpOworICAgIC8vbV9kcmF3aW5nQXJlYS0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygpOwogCiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1f
ZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUpIHsK
QEAgLTc4MTgsNiArNzgxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppc0pJVEVuYWJsZWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJXZWJQYWdl
UHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSIpOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBBU1NFUlQobV9kcmF3aW5nQXJlYS0+dHlwZSgpID09IERyYXdpbmdBcmVhVHlw
ZVRpbGVkQ29yZUFuaW1hdGlvbik7CiAjZW5kaWYKQEAgLTc4MjgsNiArNzgyOSwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXll
clRyZWVDb250ZXh0JiBsYXllcgogICAgIG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFz
aGluZyA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheWVyRmx1
c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKK3sKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJl
YVR5cGVUaWxlZENvcmVBbmltYXRpb24pOworI2VuZGlmCisgICAgcGFnZUNsaWVudCgpLmRpZEZp
cnN0TGF5ZXJGbHVzaChsYXllclRyZWVDb250ZXh0KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6
OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7CiAgICAgcGFnZUNsaWVudCgpLmV4
aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA5NzEzNmQ1MDFiNC4uNDAwY2FiMTI3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02NTQsNiArNjU0LDggQEAgcHVibGljOgogICAg
IHZvaWQgd2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlE
KTsKICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSB7IG1fd2FpdGluZ0ZvckRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUgPSBmYWxzZTsgfQogCisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
aXR5U3RhdGU7IH0KKwogICAgIHZvaWQgbGF5ZXJIb3N0aW5nTW9kZURpZENoYW5nZSgpOwogCiAg
ICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIGNvbnN0OwpAQCAtMTE3OSw2ICsxMTgxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKKyAgICB2b2lkIGRp
ZEZpcnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAKICAgICB2b2lkIGFk
ZEVkaXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZUVkaXRD
b21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZjBjYzM4YTQ4OTQuLmY5OTlkYmE4YTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aApAQCAtMTUyLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2
b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25h
cHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50
Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KaW5kZXggZDdkYWMwMjUyODUuLmRiY2Q2ODE5ZGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01MzMsNiAr
NTMzLDE0IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5CiAgICAgbV9pbXBsLT5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKHJlbmRlckxheWVyKTsKIH0KIAordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVy
VHJlZUNvbnRleHQpCit7CisgICAgQVNTRVJUKCFsYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKSk7
CisKKyAgICBDQUxheWVyICpyZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJX
aXRoQ29udGV4dElEOmxheWVyVHJlZUNvbnRleHQuY29udGV4dElEXTsKKyAgICBtX2ltcGwtPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXJBZnRlckZsdXNoKHJlbmRlckxheWVyKTsK
K30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCkKIHsKICAgICBtX2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIobmls
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDgzYzcwY2ZjMTEzLi5lMjI4
MmViM2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC00Niw2ICs0Niw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
dWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0
YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tCmluZGV4IDcxZTQ1YTI2MWIwLi41ZmE2N2M3OGVhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTExMyw2ICsxMTMsMTEgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSh1aW50NjQKICAgICBtX3dlYlBhZ2VQcm94eS51cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5OjpkaWRGaXJzdExheWVyRmx1c2godWludDY0X3QgLyogYmFja2lu
Z1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4
dCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29u
dGV4dCk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlk
VXBkYXRlR2VvbWV0cnkoKQogewogICAgIEFTU0VSVChtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdl
b21ldHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCmluZGV4IDg4M2VmMWY1ZjJhLi43ODU0MTNiZjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC03OSw2ICs3OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlSWZOZWVkZWQoKSB7IH0KKwogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2
aXJ0dWFsLgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggOTI4ZWMyYTM1YTUuLjg4
YTRmOTViMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAt
MTA2LDcgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNr
SUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRTY2FsZVZpZXdUb0Zp
dERvY3VtZW50KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CisgICAgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZW5kRGlkRmly
c3RMYXllckZsdXNoSWZOZWVkZWQoKTsKIAogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKICAgICB2
b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikgb3ZlcnJpZGU7CkBAIC0xNjksNiArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
U2NhbGluZ1ZpZXdUb0ZpdERvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTZW5k
RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKKyAgICBib29sIG1fbmVl
ZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoIHsgdHJ1ZSB9OwogfTsKIAogaW5saW5lIGJvb2wgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkZE1pbGVzdG9uZXNUb0Rpc3BhdGNoKE9wdGlv
blNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IHBhaW50TWlsZXN0b25lcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA5YzA4ODdlNjkzZS4uYmU4Y2Rj
YTljMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTkw
LDYgKzkwLDggQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKIAogICAgIHVwZGF0ZUxheWVySG9z
dGluZ0NvbnRleHQoKTsKICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7
CisKKyAgICBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CiB9
CiAKIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEoKQpAQCAtOTcsMTUgKzk5LDM2IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQogICAgIGludmFsaWRhdGVSZW5k
ZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRl
ZCgpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXll
ckZsdXNoSWZOZWVkZWQoKQogewogICAgIGlmICghbV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmICghbV9uZWVkc1NlbmREaWRGaXJzdExheWVyRmx1c2gpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX25lZWRzU2VuZERpZEZpcnN0TGF5ZXJGbHVzaCA9IGZhbHNlOworCisgICAg
Ly8gTGV0IHRoZSBmaXJzdCBjb21taXQgY29tcGxldGUgYmVmb3JlIHNlbmRpbmcuCisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBMYXllclRyZWVDb250ZXh0IGxheWVyVHJlZUNvbnRleHQ7CisgICAgICAgIGxheWVyVHJlZUNv
bnRleHQuY29udGV4dElEID0gbV9sYXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RGlkRmlyc3RMYXllckZsdXNo
KDAsIGxheWVyVHJlZUNvbnRleHQpKTsKKyAgICB9KTsKK30KKwordm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5l
ZWRlZCgpCit7CisgICAgLyppZiAoIW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47Ki8KKwog
ICAgIGlmICghbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlID0gZmFsc2U7CiAKKyAgICBXVEZMb2dBbHdheXMoIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkiKTsK
KwogICAgIC8vIExldCB0aGUgZmlyc3QgY29tbWl0IGNvbXBsZXRlIGJlZm9yZSBzZW5kaW5nLgog
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTQ4Myw3ICs1MDYsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoVXBkYXRl
UmVuZGVyaW5nVHlwZSBmbHVzaFR5cAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRpZEZsdXNo
QWxsRnJhbWVzKSB7Ci0gICAgICAgICAgICBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZUlmTmVlZGVkKCk7CisgICAgICAgICAgICBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVk
ZWQoKTsKICAgICAgICAgICAgIGludmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2
ZXIoKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395997</attachid>
            <date>2020-04-09 13:27:39 -0700</date>
            <delta_ts>2020-04-09 13:29:56 -0700</delta_ts>
            <desc>Proof of concept fix</desc>
            <filename>210297_PSON_Accelerated_Compositing_wip.patch</filename>
            <type>text/plain</type>
            <size>14991</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA3ZjlkOGUxOWJlOC4uZDg5YTY0ZTMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xMjEsNiArMTIyLDExIEBAIC0gKHZvaWQp
ZGlzcGxheQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
CisgICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFjZS1iYWNr
ZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdoaWNoIGlz
IGNvbmZ1c2luZy4KKyAgICAvLyBTbyB0byBrbm93IGlmIHdlJ3JlIGRyYXdpbmcgb24gdGhlIENQ
VSBvciBHUFUsIGp1c3QgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSByZWd1bGFyIG9sZCBiaXRtYXAg
Y29udGV4dC4KKyAgICBib29sIHVzZXNDUFVEcmF3aW5nID0gQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKKyAgICBXVEZMb2dBbHdheXMoIldlYlNpbXBs
ZUxheWVyICVwIHJlcXVlc3RlZCBHUFUgZHJhd2luZzogJWQgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIHNlbGYuYWNjZWxlcmF0ZXNEcmF3aW5nLCAhdXNlc0NQVURyYXdpbmcpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IGNiN2ZiZjkzZTMwLi4zODY3OTQ2OTdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC00MzIsNiArNDMyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKENBTGF5ZXIgKik7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICopOwogICAgIENBTGF5ZXIgKmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFpbFZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc2ZGZm
ZmU3M2NjLi4xZGQ2ZTAzZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTM4MTEsNiArMzgxMSwzMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsK
ICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICBpZiAoIW1fcm9v
dExheWVyKQorICAgICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXllcjsKKworICAgIGlmIChtX3Ro
dW1ibmFpbFZpZXcpIHsKKyAgICAgICAgdXBkYXRlVGh1bWJuYWlsVmlld0xheWVyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIFdURkxvZ0Fsd2F5cygi
JXAgLSBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjogJXAiLCB0aGlzLCByb290
TGF5ZXIpOworICAgIGlmIChyb290TGF5ZXIpCisgICAgICAgIFtbbV9sYXllckhvc3RpbmdWaWV3
IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKyAgICBlbHNlCisg
ICAgICAgW21fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl0uc3VibGF5ZXJzID0gbmlsOworCisgICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqcm9vdExheWVyKQor
eworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwogICAgIG1fcm9vdExh
eWVyID0gcm9vdExheWVyOwogCiAgICAgaWYgKG1fdGh1bWJuYWlsVmlldykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGQ1MTE5MjY2NDkwLi41YjBi
OGRlZTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApA
QCAtMTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXll
clRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaCh1
aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdl
b21ldHJ5KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4YjUxN2VmZDhkLi5iY2E2MDU2ZWE2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYVByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQp
CiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0
b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisgICAgRGlkRmly
c3RMYXllckZsdXNoKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJU
cmVlQ29udGV4dCBjb250ZXh0KQogICAgIERpc3BhdGNoUHJlc2VudGF0aW9uQ2FsbGJhY2tzQWZ0
ZXJGbHVzaGluZ0xheWVycyhWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcyk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCBhMGI3MDNjMmRmZC4uOGE5ZDljNmJjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheWVy
Rmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIxNjYzZTljYmEwLi41ZTFiNjkzNmMxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODE4LDYgKzc4MTgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRy
ZWVDb250ZXh0KQogeworICAgIFdURkxvZ0Fsd2F5cygiV2ViUGFnZVByb3h5OjplbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkiKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgQVNTRVJU
KG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRp
b24pOwogI2VuZGlmCkBAIC03ODI4LDYgKzc4MjksMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5
ZXIKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFT
U0VSVChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5p
bWF0aW9uKTsKKyNlbmRpZgorICAgIHBhZ2VDbGllbnQoKS5kaWRGaXJzdExheWVyRmx1c2gobGF5
ZXJUcmVlQ29udGV4dCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpleGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKQogewogICAgIHBhZ2VDbGllbnQoKS5leGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
OTcxMzZkNTAxYjQuLjQwMGNhYjEyN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNjU0LDYgKzY1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRGb3JEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCk7CiAgICAgdm9pZCBkaWRV
cGRhdGVBY3Rpdml0eVN0YXRlKCkgeyBtX3dhaXRpbmdGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
ID0gZmFsc2U7IH0KIAorICAgIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpdml0eVN0YXRlOyB9CisKICAg
ICB2b2lkIGxheWVySG9zdGluZ01vZGVEaWRDaGFuZ2UoKTsKIAogICAgIFdlYkNvcmU6OkludFNp
emUgdmlld1NpemUoKSBjb25zdDsKQEAgLTExNzksNiArMTE4MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRy
ZWVDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CisgICAgdm9pZCBkaWRGaXJzdExheWVyRmx1c2go
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogCiAgICAgdm9pZCBhZGRFZGl0Q29tbWFuZChXZWJF
ZGl0Q29tbWFuZFByb3h5Jik7CiAgICAgdm9pZCByZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0Q29t
bWFuZFByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCmluZGV4IGYwY2MzOGE0ODk0Li5mOTk5ZGJhOGEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE1Miw2ICsxNTIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShj
b25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdl
YkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhh
bmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4
IGQ3ZGFjMDI1Mjg1Li5kYmNkNjgxOWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTMzLDYgKzUzMywxNCBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVy
VHJlZUNvbnRleHQmIGxheQogICAgIG1faW1wbC0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jv
b3RMYXllcihyZW5kZXJMYXllcik7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpcnN0
TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQorewor
ICAgIEFTU0VSVCghbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkpOworCisgICAgQ0FMYXllciAq
cmVuZGVyTGF5ZXIgPSBbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDpsYXll
clRyZWVDb250ZXh0LmNvbnRleHRJRF07CisgICAgbV9pbXBsLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChyZW5kZXJMYXllcik7Cit9CisKIHZvaWQgUGFnZUNs
aWVudEltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7CiAgICAgbV9pbXBs
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG5pbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkuaAppbmRleCA4M2M3MGNmYzExMy4uZTIyODJlYjNmOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaApAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdT
dG9yZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0
YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZp
cnN0TGF5ZXJGbHVzaCh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBM
YXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpp
bmRleCA3MWU0NWEyNjFiMC4uNWZhNjdjNzhlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Lm1tCkBAIC0xMTMsNiArMTEzLDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0CiAg
ICAgbV93ZWJQYWdlUHJveHkudXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJU
cmVlQ29udGV4dCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eTo6ZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8s
IGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7CisgICAgbV93ZWJQ
YWdlUHJveHkuZGlkRmlyc3RMYXllckZsdXNoKGxheWVyVHJlZUNvbnRleHQpOworfQorCiB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUdlb21ldHJ5KCkK
IHsKICAgICBBU1NFUlQobV9pc1dhaXRpbmdGb3JEaWRVcGRhdGVHZW9tZXRyeSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA4ODNlZjFm
NWYyYS4uNzg1NDEzYmY3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaApAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpID0gMDsKIAorICAgIHZpcnR1
YWwgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkgeyB9
CisKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2aXJ0
dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWlu
dEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY2N2YyNzkyYjVlLi44MzRiNDI3NjVk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTU4NTksNiArNTg1OSw4IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSog
ZnJhbWUpCiAKICAgICBBU1NFUlQoIWZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc3RhdGVN
YWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKTsKICAgICB1bmZyZWV6ZUxh
eWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlByb2Nlc3NTd2FwKTsKKyAgICBpZiAobV9k
cmF3aW5nQXJlYSkKKyAgICAgICAgbV9kcmF3aW5nQXJlYS0+c2VuZEVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGVJZk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDkyOGVjMmEzNWE1Li44OGE0Zjk1YjBh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTEwNiw3ICsx
MDYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxi
YWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVu
dChib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGVJZk5lZWRlZCgpOworICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGVJZk5lZWRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2VuZERpZEZpcnN0TGF5ZXJG
bHVzaElmTmVlZGVkKCk7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21t
aXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4p
IG92ZXJyaWRlOwpAQCAtMTY5LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3Vs
ZFNjYWxlVmlld1RvRml0RG9jdW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NjYWxpbmdW
aWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU2VuZEVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyB0cnVlIH07CisgICAgYm9vbCBtX25lZWRzU2VuZERp
ZEZpcnN0TGF5ZXJGbHVzaCB7IHRydWUgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggOWMwODg3ZTY5M2UuLmY0ZTExYTgxMTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC05MCw2ICs5MCw5
IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250
ZXh0KCk7CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOworCisgICAg
aWYgKCFwYXJhbWV0ZXJzLmlzUHJvY2Vzc1N3YXApCisgICAgICAgIHNlbmRFbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKTsKIH0KIAogVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6On5UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCkBAIC05NywxNSArMTAw
LDM2IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEoKQogICAgIGludmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2
ZXIoKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2VuZEVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpCit2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKQogewogICAg
IGlmICghbV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV9uZWVkc1Nl
bmREaWRGaXJzdExheWVyRmx1c2gpCisgICAgICAgIHJldHVybjsKKyAgICBtX25lZWRzU2VuZERp
ZEZpcnN0TGF5ZXJGbHVzaCA9IGZhbHNlOworCisgICAgLy8gTGV0IHRoZSBmaXJzdCBjb21taXQg
Y29tcGxldGUgYmVmb3JlIHNlbmRpbmcuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMYXllclRyZWVDb250ZXh0IGxheWVy
VHJlZUNvbnRleHQ7CisgICAgICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXll
ckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6RHJh
d2luZ0FyZWFQcm94eTo6RGlkRmlyc3RMYXllckZsdXNoKDAsIGxheWVyVHJlZUNvbnRleHQpKTsK
KyAgICB9KTsKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2VuZEVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpCit7CisgICAgLyppZiAoIW1f
cm9vdExheWVyKQorICAgICAgICByZXR1cm47Ki8KKwogICAgIGlmICghbV9uZWVkc1NlbmRFbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVk
c1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7CiAKKyAgICBXVEZM
b2dBbHdheXMoIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkiKTsKKwogICAgIC8vIExldCB0aGUgZmlyc3Qg
Y29tbWl0IGNvbXBsZXRlIGJlZm9yZSBzZW5kaW5nLgogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKQEAgLTQ4Myw3ICs1MDcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoVXBkYXRlUmVuZGVyaW5nVHlwZSBmbHVzaFR5cAog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGRpZEZsdXNoQWxsRnJhbWVzKSB7Ci0gICAgICAgICAg
ICBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CisgICAgICAg
ICAgICBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGludmFs
aWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395998</attachid>
            <date>2020-04-09 13:29:56 -0700</date>
            <delta_ts>2020-04-09 13:31:02 -0700</delta_ts>
            <desc>Proof of concept fix</desc>
            <filename>210297_PSON_Accelerated_Compositing_wip.patch</filename>
            <type>text/plain</type>
            <size>14127</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA3ZjlkOGUxOWJlOC4uZDg5YTY0ZTMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xMjEsNiArMTIyLDExIEBAIC0gKHZvaWQp
ZGlzcGxheQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
CisgICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFjZS1iYWNr
ZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdoaWNoIGlz
IGNvbmZ1c2luZy4KKyAgICAvLyBTbyB0byBrbm93IGlmIHdlJ3JlIGRyYXdpbmcgb24gdGhlIENQ
VSBvciBHUFUsIGp1c3QgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSByZWd1bGFyIG9sZCBiaXRtYXAg
Y29udGV4dC4KKyAgICBib29sIHVzZXNDUFVEcmF3aW5nID0gQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKKyAgICBXVEZMb2dBbHdheXMoIldlYlNpbXBs
ZUxheWVyICVwIHJlcXVlc3RlZCBHUFUgZHJhd2luZzogJWQgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIHNlbGYuYWNjZWxlcmF0ZXNEcmF3aW5nLCAhdXNlc0NQVURyYXdpbmcpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IGNiN2ZiZjkzZTMwLi4zODY3OTQ2OTdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC00MzIsNiArNDMyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKENBTGF5ZXIgKik7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICopOwogICAgIENBTGF5ZXIgKmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFpbFZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc2ZGZm
ZmU3M2NjLi4xZGQ2ZTAzZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTM4MTEsNiArMzgxMSwzMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsK
ICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICBpZiAoIW1fcm9v
dExheWVyKQorICAgICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXllcjsKKworICAgIGlmIChtX3Ro
dW1ibmFpbFZpZXcpIHsKKyAgICAgICAgdXBkYXRlVGh1bWJuYWlsVmlld0xheWVyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIFdURkxvZ0Fsd2F5cygi
JXAgLSBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjogJXAiLCB0aGlzLCByb290
TGF5ZXIpOworICAgIGlmIChyb290TGF5ZXIpCisgICAgICAgIFtbbV9sYXllckhvc3RpbmdWaWV3
IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKyAgICBlbHNlCisg
ICAgICAgW21fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl0uc3VibGF5ZXJzID0gbmlsOworCisgICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqcm9vdExheWVyKQor
eworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwogICAgIG1fcm9vdExh
eWVyID0gcm9vdExheWVyOwogCiAgICAgaWYgKG1fdGh1bWJuYWlsVmlldykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGQ1MTE5MjY2NDkwLi41YjBi
OGRlZTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApA
QCAtMTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXll
clRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaCh1
aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdl
b21ldHJ5KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4YjUxN2VmZDhkLi5iY2E2MDU2ZWE2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYVByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQp
CiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0
b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisgICAgRGlkRmly
c3RMYXllckZsdXNoKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJU
cmVlQ29udGV4dCBjb250ZXh0KQogICAgIERpc3BhdGNoUHJlc2VudGF0aW9uQ2FsbGJhY2tzQWZ0
ZXJGbHVzaGluZ0xheWVycyhWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcyk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCBhMGI3MDNjMmRmZC4uOGE5ZDljNmJjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheWVy
Rmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIxNjYzZTljYmEwLi5hODM0NjMwOTM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODI4LDYgKzc4Mjgs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXIKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9Q
cmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmly
c3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0g
RHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKTsKKyNlbmRpZgorICAgIHBhZ2VDbGll
bnQoKS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29udGV4dCk7Cit9CisKIHZvaWQgV2Vi
UGFnZVByb3h5OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewogICAgIHBhZ2VD
bGllbnQoKS5leGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTcxMzZkNTAxYjQuLjI5ZWVlMWVhZTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMSw0ICsxLDQgQEAKLS8qCith
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTExNzksNiArMTE3OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXll
clRyZWVDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CisgICAgdm9pZCBkaWRGaXJzdExheWVyRmx1
c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogCiAgICAgdm9pZCBhZGRFZGl0Q29tbWFuZChX
ZWJFZGl0Q29tbWFuZFByb3h5Jik7CiAgICAgdm9pZCByZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0
Q29tbWFuZFByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCmluZGV4IGYwY2MzOGE0ODk0Li5mOTk5ZGJhOGEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTE1Miw2ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGl0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJp
ZGU7CiAKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFs
PFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2hlZWxFdmVudFdhc05v
dEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmlu
ZGV4IGQ3ZGFjMDI1Mjg1Li5kYmNkNjgxOWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNTMzLDYgKzUzMywxNCBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmIGxheQogICAgIG1faW1wbC0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcihyZW5kZXJMYXllcik7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZp
cnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQor
eworICAgIEFTU0VSVCghbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCkpOworCisgICAgQ0FMYXll
ciAqcmVuZGVyTGF5ZXIgPSBbQ0FMYXllciBfd2ViX3JlbmRlckxheWVyV2l0aENvbnRleHRJRDps
YXllclRyZWVDb250ZXh0LmNvbnRleHRJRF07CisgICAgbV9pbXBsLT5zZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChyZW5kZXJMYXllcik7Cit9CisKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7CiAgICAgbV9p
bXBsLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG5pbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkuaAppbmRleCA4M2M3MGNmYzExMy4uZTIyODJlYjNmOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaApAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tp
bmdTdG9yZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2
b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9y
ZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEZpcnN0TGF5ZXJGbHVzaCh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25z
dCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bQppbmRleCA3MWU0NWEyNjFiMC4uNWZhNjdjNzhlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCkBAIC0xMTMsNiArMTEzLDExIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0
CiAgICAgbV93ZWJQYWdlUHJveHkudXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5
ZXJUcmVlQ29udGV4dCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eTo6ZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQg
Ki8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7CisgICAgbV93
ZWJQYWdlUHJveHkuZGlkRmlyc3RMYXllckZsdXNoKGxheWVyVHJlZUNvbnRleHQpOworfQorCiB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUdlb21ldHJ5
KCkKIHsKICAgICBBU1NFUlQobV9pc1dhaXRpbmdGb3JEaWRVcGRhdGVHZW9tZXRyeSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA4ODNl
ZjFmNWYyYS4uNzg1NDEzYmY3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xs
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpID0gMDsKIAorICAgIHZp
cnR1YWwgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkg
eyB9CisKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVw
YWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY2N2YyNzkyYjVlLi44MzRiNDI3
NjVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTU4NTksNiArNTg1OSw4IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFt
ZSogZnJhbWUpCiAKICAgICBBU1NFUlQoIWZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc3Rh
dGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKTsKICAgICB1bmZyZWV6
ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlByb2Nlc3NTd2FwKTsKKyAgICBpZiAo
bV9kcmF3aW5nQXJlYSkKKyAgICAgICAgbV9kcmF3aW5nQXJlYS0+c2VuZEVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBjbGVhckxvYWRlZFRoaXJkUGFydHlEb21haW5zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDkyOGVjMmEzNWE1Li44OGE0Zjk1
YjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTEwNiw3
ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENh
bGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudChib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVJZk5lZWRlZCgpOworICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVJZk5lZWRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2VuZERpZEZpcnN0TGF5
ZXJGbHVzaElmTmVlZGVkKCk7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pIG92ZXJyaWRlOwpAQCAtMTY5LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NjYWxp
bmdWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU2VuZEVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyB0cnVlIH07CisgICAgYm9vbCBtX25lZWRzU2Vu
ZERpZEZpcnN0TGF5ZXJGbHVzaCB7IHRydWUgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggOWMwODg3ZTY5M2UuLmNiM2VlYjk1NTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC05MCw2ICs5
MCw5IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdD
b250ZXh0KCk7CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOworCisg
ICAgaWYgKCFwYXJhbWV0ZXJzLmlzUHJvY2Vzc1N3YXApCisgICAgICAgIHNlbmRFbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKTsKIH0KIAogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6On5UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCkBAIC05NywxMSAr
MTAwLDI3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEoKQogICAgIGludmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2Jz
ZXJ2ZXIoKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2VuZEVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpCit2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKQogewog
ICAgIGlmICghbV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICghbV9uZWVk
c1NlbmREaWRGaXJzdExheWVyRmx1c2gpCisgICAgICAgIHJldHVybjsKKyAgICBtX25lZWRzU2Vu
ZERpZEZpcnN0TGF5ZXJGbHVzaCA9IGZhbHNlOworCisgICAgLy8gTGV0IHRoZSBmaXJzdCBjb21t
aXQgY29tcGxldGUgYmVmb3JlIHNlbmRpbmcuCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMYXllclRyZWVDb250ZXh0IGxh
eWVyVHJlZUNvbnRleHQ7CisgICAgICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9s
YXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6RGlkRmlyc3RMYXllckZsdXNoKDAsIGxheWVyVHJlZUNvbnRleHQp
KTsKKyAgICB9KTsKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2Vu
ZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpCit7CiAgICAgaWYgKCFt
X25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBmYWxz
ZTsKQEAgLTQ4Myw3ICs1MDIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojp1cGRhdGVSZW5kZXJpbmcoVXBkYXRlUmVuZGVyaW5nVHlwZSBmbHVzaFR5cAogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGRpZEZsdXNoQWxsRnJhbWVzKSB7Ci0gICAgICAgICAgICBzZW5kRW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CisgICAgICAgICAgICBzZW5k
RGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGludmFsaWRhdGVSZW5k
ZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395999</attachid>
            <date>2020-04-09 13:31:02 -0700</date>
            <delta_ts>2020-04-09 13:50:12 -0700</delta_ts>
            <desc>Proof of concept fix</desc>
            <filename>210297_PSON_Accelerated_Compositing_wip.patch</filename>
            <type>text/plain</type>
            <size>13967</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA3ZjlkOGUxOWJlOC4uZDg5YTY0ZTMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xMjEsNiArMTIyLDExIEBAIC0gKHZvaWQp
ZGlzcGxheQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
CisgICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFjZS1iYWNr
ZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdoaWNoIGlz
IGNvbmZ1c2luZy4KKyAgICAvLyBTbyB0byBrbm93IGlmIHdlJ3JlIGRyYXdpbmcgb24gdGhlIENQ
VSBvciBHUFUsIGp1c3QgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSByZWd1bGFyIG9sZCBiaXRtYXAg
Y29udGV4dC4KKyAgICBib29sIHVzZXNDUFVEcmF3aW5nID0gQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKKyAgICBXVEZMb2dBbHdheXMoIldlYlNpbXBs
ZUxheWVyICVwIHJlcXVlc3RlZCBHUFUgZHJhd2luZzogJWQgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIHNlbGYuYWNjZWxlcmF0ZXNEcmF3aW5nLCAhdXNlc0NQVURyYXdpbmcpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IGNiN2ZiZjkzZTMwLi4zODY3OTQ2OTdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC00MzIsNiArNDMyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKENBTGF5ZXIgKik7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICopOwogICAgIENBTGF5ZXIgKmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFpbFZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc2ZGZm
ZmU3M2NjLi4xZGQ2ZTAzZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTM4MTEsNiArMzgxMSwzMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsK
ICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICBpZiAoIW1fcm9v
dExheWVyKQorICAgICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXllcjsKKworICAgIGlmIChtX3Ro
dW1ibmFpbFZpZXcpIHsKKyAgICAgICAgdXBkYXRlVGh1bWJuYWlsVmlld0xheWVyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIFdURkxvZ0Fsd2F5cygi
JXAgLSBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjogJXAiLCB0aGlzLCByb290
TGF5ZXIpOworICAgIGlmIChyb290TGF5ZXIpCisgICAgICAgIFtbbV9sYXllckhvc3RpbmdWaWV3
IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKyAgICBlbHNlCisg
ICAgICAgW21fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl0uc3VibGF5ZXJzID0gbmlsOworCisgICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqcm9vdExheWVyKQor
eworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwogICAgIG1fcm9vdExh
eWVyID0gcm9vdExheWVyOwogCiAgICAgaWYgKG1fdGh1bWJuYWlsVmlldykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGQ1MTE5MjY2NDkwLi41YjBi
OGRlZTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApA
QCAtMTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXll
clRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaCh1
aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdl
b21ldHJ5KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4YjUxN2VmZDhkLi5iY2E2MDU2ZWE2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYVByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQp
CiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0
b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisgICAgRGlkRmly
c3RMYXllckZsdXNoKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJU
cmVlQ29udGV4dCBjb250ZXh0KQogICAgIERpc3BhdGNoUHJlc2VudGF0aW9uQ2FsbGJhY2tzQWZ0
ZXJGbHVzaGluZ0xheWVycyhWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcyk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCBhMGI3MDNjMmRmZC4uOGE5ZDljNmJjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheWVy
Rmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIxNjYzZTljYmEwLi5hODM0NjMwOTM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03ODI4LDYgKzc4Mjgs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXIKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9Q
cmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmly
c3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0g
RHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKTsKKyNlbmRpZgorICAgIHBhZ2VDbGll
bnQoKS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29udGV4dCk7Cit9CisKIHZvaWQgV2Vi
UGFnZVByb3h5OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewogICAgIHBhZ2VD
bGllbnQoKS5leGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTcxMzZkNTAxYjQuLjRjMzA4MGI1NzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OSw2ICsxMTc5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKKyAgICB2b2lkIGRpZEZp
cnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAKICAgICB2b2lkIGFkZEVk
aXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZUVkaXRDb21t
YW5kKFdlYkVkaXRDb21tYW5kUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZjBjYzM4YTQ4OTQuLmY5OTlkYmE4YTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApA
QCAtMTUyLDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2b2lk
IGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBk
YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNo
b3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVl
bEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KaW5kZXggZDdkYWMwMjUyODUuLmRiY2Q2ODE5ZGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01MzMsNiArNTMz
LDE0IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5CiAgICAgbV9pbXBsLT5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUm9vdExheWVyKHJlbmRlckxheWVyKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJl
ZUNvbnRleHQpCit7CisgICAgQVNTRVJUKCFsYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKSk7CisK
KyAgICBDQUxheWVyICpyZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRo
Q29udGV4dElEOmxheWVyVHJlZUNvbnRleHQuY29udGV4dElEXTsKKyAgICBtX2ltcGwtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXJBZnRlckZsdXNoKHJlbmRlckxheWVyKTsKK30K
Kwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkK
IHsKICAgICBtX2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIobmlsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDgzYzcwY2ZjMTEzLi5lMjI4MmVi
M2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC00Niw2ICs0Niw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWlu
dDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3Qg
YmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRl
SUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCmluZGV4IDcxZTQ1YTI2MWIwLi41ZmE2N2M3OGVhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTExMyw2ICsxMTMsMTEgQEAgdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSh1aW50NjQKICAgICBtX3dlYlBhZ2VQcm94eS51cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5OjpkaWRGaXJzdExheWVyRmx1c2godWludDY0X3QgLyogYmFja2luZ1N0
b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkK
K3sKKyAgICBtX3dlYlBhZ2VQcm94eS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29udGV4
dCk7Cit9CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBk
YXRlR2VvbWV0cnkoKQogewogICAgIEFTU0VSVChtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21l
dHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CmluZGV4IDg4M2VmMWY1ZjJhLi43ODU0MTNiZjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
SWZOZWVkZWQoKSB7IH0KKwogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0
dWFsLgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjY3ZjI3OTJi
NWUuLjgzNGI0Mjc2NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNTg1OSw2ICs1ODU5LDggQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRM
b2FkKFdlYkZyYW1lKiBmcmFtZSkKIAogICAgIEFTU0VSVCghZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpOwog
ICAgIHVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbjo6UHJvY2Vzc1N3YXAp
OworICAgIGlmIChtX2RyYXdpbmdBcmVhKQorICAgICAgICBtX2RyYXdpbmdBcmVhLT5zZW5kRW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGNsZWFyTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggOTI4ZWMyYTM1
YTUuLjg4YTRmOTViMGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aApAQCAtMTA2LDcgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZW5kRW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CisgICAgdm9pZCBzZW5kRW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZW5k
RGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsKIAogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CkBAIC0xNjksNiArMTcwLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2lzU2NhbGluZ1ZpZXdUb0ZpdERvY3VtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVl
ZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSB7IHRydWUgfTsKKyAgICBib29s
IG1fbmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoIHsgdHJ1ZSB9OwogfTsKIAogaW5saW5lIGJv
b2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkZE1pbGVzdG9uZXNUb0Rpc3BhdGNo
KE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IHBhaW50TWlsZXN0b25lcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA5YzA4ODdlNjkzZS4u
Y2IzZWViOTU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
QEAgLTkwLDYgKzkwLDkgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKIAogICAgIHVwZGF0ZUxh
eWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JT
cGFjZSk7CisKKyAgICBpZiAoIXBhcmFtZXRlcnMuaXNQcm9jZXNzU3dhcCkKKyAgICAgICAgc2Vu
ZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpOwogfQogCiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkK
QEAgLTk3LDExICsxMDAsMjcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6On5UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCiAgICAgaW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0
ZVJ1bkxvb3BPYnNlcnZlcigpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkKK3ZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5l
ZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKCFtX25lZWRzU2VuZERpZEZpcnN0TGF5ZXJGbHVzaCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fbmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoID0gZmFsc2U7CisKKyAgICAvLyBMZXQgdGhl
IGZpcnN0IGNvbW1pdCBjb21wbGV0ZSBiZWZvcmUgc2VuZGluZy4KKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIExheWVyVHJl
ZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKKyAgICAgICAgbGF5ZXJUcmVlQ29udGV4dC5jb250
ZXh0SUQgPSBtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpEaWRGaXJzdExheWVyRmx1c2goMCwgbGF5ZXJU
cmVlQ29udGV4dCkpOworICAgIH0pOworfQorCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCkKK3sK
ICAgICBpZiAoIW1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSA9IGZhbHNlOwpAQCAtNDgzLDcgKzUwMiw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyhVcGRhdGVSZW5kZXJpbmdUeXBlIGZsdXNoVHlw
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGlkRmx1c2hBbGxGcmFtZXMpIHsKLSAgICAgICAg
ICAgIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKTsKKyAgICAg
ICAgICAgIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOwogICAgICAgICAgICAgaW52
YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogICAgICAgICB9CiAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396004</attachid>
            <date>2020-04-09 13:50:12 -0700</date>
            <delta_ts>2020-04-09 14:05:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>210297_PSON_Accelerated_Compositing_wip.patch</filename>
            <type>text/plain</type>
            <size>24847</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA3ZjlkOGUxOWJlOC4uZDg5YTY0ZTMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xMjEsNiArMTIyLDExIEBAIC0gKHZvaWQp
ZGlzcGxheQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
CisgICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFjZS1iYWNr
ZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdoaWNoIGlz
IGNvbmZ1c2luZy4KKyAgICAvLyBTbyB0byBrbm93IGlmIHdlJ3JlIGRyYXdpbmcgb24gdGhlIENQ
VSBvciBHUFUsIGp1c3QgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSByZWd1bGFyIG9sZCBiaXRtYXAg
Y29udGV4dC4KKyAgICBib29sIHVzZXNDUFVEcmF3aW5nID0gQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKKyAgICBXVEZMb2dBbHdheXMoIldlYlNpbXBs
ZUxheWVyICVwIHJlcXVlc3RlZCBHUFUgZHJhd2luZzogJWQgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIHNlbGYuYWNjZWxlcmF0ZXNEcmF3aW5nLCAhdXNlc0NQVURyYXdpbmcpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IGNiN2ZiZjkzZTMwLi4zODY3OTQ2OTdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC00MzIsNiArNDMyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKENBTGF5ZXIgKik7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICopOwogICAgIENBTGF5ZXIgKmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFpbFZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc2ZGZm
ZmU3M2NjLi4xZGQ2ZTAzZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTM4MTEsNiArMzgxMSwzMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsK
ICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICBpZiAoIW1fcm9v
dExheWVyKQorICAgICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXllcjsKKworICAgIGlmIChtX3Ro
dW1ibmFpbFZpZXcpIHsKKyAgICAgICAgdXBkYXRlVGh1bWJuYWlsVmlld0xheWVyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NB
VHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKworICAgIFdURkxvZ0Fsd2F5cygi
JXAgLSBfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjogJXAiLCB0aGlzLCByb290
TGF5ZXIpOworICAgIGlmIChyb290TGF5ZXIpCisgICAgICAgIFtbbV9sYXllckhvc3RpbmdWaWV3
IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKyAgICBlbHNlCisg
ICAgICAgW21fbGF5ZXJIb3N0aW5nVmlldyBsYXllcl0uc3VibGF5ZXJzID0gbmlsOworCisgICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqcm9vdExheWVyKQor
eworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwogICAgIG1fcm9vdExh
eWVyID0gcm9vdExheWVyOwogCiAgICAgaWYgKG1fdGh1bWJuYWlsVmlldykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGQ1MTE5MjY2NDkwLi41YjBi
OGRlZTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApA
QCAtMTQ0LDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXll
clRyZWVDb250ZXh0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaCh1
aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdl
b21ldHJ5KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4YjUxN2VmZDhkLi5iY2E2MDU2ZWE2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYVByb3h5IE5v
dFJlZkNvdW50ZWQgewogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQp
CiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0
b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisgICAgRGlkRmly
c3RMYXllckZsdXNoKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJU
cmVlQ29udGV4dCBjb250ZXh0KQogICAgIERpc3BhdGNoUHJlc2VudGF0aW9uQ2FsbGJhY2tzQWZ0
ZXJGbHVzaGluZ0xheWVycyhWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcyk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApp
bmRleCBhMGI3MDNjMmRmZC4uOGE5ZDljNmJjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTM1MCw2ICszNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheWVy
Rmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IGZjNDdkMjM0NTA4Li41ZDY3
ZGVmMmFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCkBAIC05NCwxMiArOTQsMTIgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJp
bmdSZWZlcmVuY2U+JiBtZXNzYWdlTmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKIH0KICNl
bmRpZgogCi1TdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJv
eHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVy
IG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKQorU3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHko
V2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEZyYW1l
SWRlbnRpZmllciBtYWluRnJhbWVJRCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVy
Rmx1c2ggc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpCiAgICAgOiBtX3Bh
Z2UocGFnZSkKICAgICAsIG1fd2ViUGFnZUlEKHBhZ2Uud2ViUGFnZUlEKCkpCiAgICAgLCBtX3By
b2Nlc3MoV1RGTW92ZShwcm9jZXNzKSkKICAgICAsIG1fbWFpbkZyYW1lSUQobWFpbkZyYW1lSUQp
Ci0gICAgLCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUpCisgICAgLCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZs
dXNoKHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKQogICAgICwgbV9zdXNw
ZW5zaW9uVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlN1c3BlbmRlZFBhZ2VQ
cm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
LCBtX3N1c3BlbnNpb25BY3Rpdml0eShtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiUGFnZSBzdXNwZW5zaW9uIGZvciBiYWNrL2ZvcndhcmQgY2FjaGUiX3MpLm1vdmVU
b1VuaXF1ZVB0cigpKQpAQCAtMTgzLDkgKzE4Myw5IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5
OjpjbG9zZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiB9CiAKLXZv
aWQgU3VzcGVuZGVkUGFnZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCkKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpwYWdlRGlkRmlyc3RMYXllckZsdXNoKCkK
IHsKLSAgICBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSA9IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZTo6Tm87CisgICAgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5
ZXJGbHVzaCA9IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpObzsKIAog
ICAgIGlmIChtX3Nob3VsZENsb3NlV2hlbkVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpIHsKICAgICAgICAgLy8gV2UgbmVlZGVkIHRoZSBzdXNwZW5kZWQgcGFnZSB0byBzdGF5IGFs
aXZlIHRvIGF2b2lkIGZsYXNoaW5nLiBOb3cgd2UgY2FuIGdldCByaWQgb2YgaXQuCkBAIC0yMDAs
OCArMjAwLDggQEAgYm9vbCBTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VJc0Nsb3NlZE9yQ2xvc2lu
ZygpIGNvbnN0CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZVdpdGhvdXRGbGFzaGlu
ZygpCiB7Ci0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQ
YWdlUHJveHk6OmNsb3NlV2l0aG91dEZsYXNoaW5nKCkgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxF
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlPyAlZCIsIHRoaXMsIG1fc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID09IFNob3Vs
ZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6WWVz
KTsKLSAgICBpZiAobV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUgPT0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlOjpZZXMpIHsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICIlcCAtIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2VXaXRob3V0Rmxhc2hpbmcoKSBzaG91
bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaD8gJWQiLCB0aGlzLCBtX3Nob3VsZERl
bGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoID09IFNob3VsZERlbGF5Q2xvc2luZ1VudGls
Rmlyc3RMYXllckZsdXNoOjpZZXMpOworICAgIGlmIChtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGls
Rmlyc3RMYXllckZsdXNoID09IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNo
OjpZZXMpIHsKICAgICAgICAgbV9zaG91bGRDbG9zZVdoZW5FbnRlcmluZ0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggZWY3YWEyZDI5YTQuLjUy
MmJlNDE1Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuaApAQCAtNTAsMTIgKzUwLDEyIEBAIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiB1c2luZyBM
YXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNlbmRpZgogCi1lbnVtIGNsYXNzIFNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA6
IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogY2xhc3MgU3VzcGVuZGVkUGFnZVBy
b3h5IGZpbmFsOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdXNwZW5kZWRQYWdlUHJv
eHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOworICAgIFN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdl
UHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
bWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKTsKICAg
ICB+U3VzcGVuZGVkUGFnZVByb3h5KCk7CiAKICAgICBzdGF0aWMgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViUHJvY2Vzc1Bvb2wmLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAg
LTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFVudGlsUmVhZHlUb1Vuc3VzcGVu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1c3BlbmRlZFBhZ2VQcm94eSopPiYmKTsKICAgICB2
b2lkIHVuc3VzcGVuZCgpOwogCi0gICAgdm9pZCBwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCk7CisgICAgdm9pZCBwYWdlRGlkRmlyc3RMYXllckZsdXNoKCk7CiAgICAgdm9p
ZCBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FU
SU9OX1ZJRVcpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZy
YW1lSUQ7CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLSAgICBTaG91bGREZWxheUNs
b3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9zaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyBTaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vIH07
CisgICAgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggbV9zaG91bGREZWxh
eUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCB7IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoOjpObyB9OwogICAgIGJvb2wgbV9zaG91bGRDbG9zZVdoZW5FbnRlcmluZ0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHsgZmFsc2UgfTsKIAogICAgIFN1c3BlbnNpb25TdGF0
ZSBtX3N1c3BlbnNpb25TdGF0ZSB7IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjE2NjNlOWNiYTAuLmQ5
NGM3ODIyNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTgxMSw3ICs4MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBybwogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2UubWVzc2Fn
ZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3Nh
Z2UubWVzc2FnZUJvZHkuZ2V0KCkpLmdldCgpKSkpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHNob3VsZERlbGF5Q2xv
c2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKK2Jvb2wgV2ViUGFn
ZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCkKIHsKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hp
bmcgPSBudWxscHRyOwogICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwpAQCAtODQz
LDcgKzg0Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBib29sIG5lZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5n
ID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlID09IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZTo6WWVzOworICAgIGJvb2wgbmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50Rmxhc2hp
bmcgPSBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBTaG91bGREZWxh
eUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzOwogICAgIGlmICghbmVlZHNTdXNwZW5k
ZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcgJiYgKCFmcm9tSXRlbSB8fCAhc2hvdWxkVXNlQmFja0Zv
cndhcmRDYWNoZSgpKSkgewogICAgICAgICBpZiAoIWZyb21JdGVtKQogICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJ
ZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVp
IHRoZXJlIGlzIG5vIGFzc29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC04NTMsNyArODUzLDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBPcHQKICAgICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVu
dCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7Ci0gICAgYXV0byBzdXNwZW5kZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJv
eHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0
byBzdXNwZW5kZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBt
X3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGls
Rmlyc3RMYXllckZsdXNoKTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQg
JWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsK
IApAQCAtMzI3NywxMiArMzI3NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlz
aW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogCiAgICAg
QVNTRVJUKG1fcHJvY2Vzcy5wdHIoKSAhPSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKSk7
CiAKLSAgICBhdXRvIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSA9IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZTo6Tm87CisgICAgYXV0byBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCA9IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpO
bzsKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gT24gbWFjT1MsIHdoZW4gbm90IHVzaW5nIFVJ
LXNpZGUgY29tcG9zaXRpbmcsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGRvIG5vdCBjbG9zZSB0
aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcHJvY2VzcyB1bnRpbCB3ZSd2ZQogICAgIC8vIGVudGVy
ZWQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIHRoZSBuZXcgcGFnZSBvciB3ZSB3aWxsIGZs
YXNoIG9uIG5hdmlnYXRpb24uCiAgICAgaWYgKGRyYXdpbmdBcmVhKCktPnR5cGUoKSA9PSBEcmF3
aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24pCi0gICAgICAgIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9IFNob3VsZERlbGF5Q2xv
c2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6WWVzOworICAgICAg
ICBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9IFNob3VsZERlbGF5Q2xv
c2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpZZXM7CiAjZW5kaWYKIAogICAgIGlmIChtX2lzTGF5
ZXJUcmVlRnJvemVuRHVlVG9Td2lwZUFuaW1hdGlvbikKQEAgLTMyOTIsNyArMzI5Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2Vi
UGFnZUlEKTsKICAgICBhdXRvKiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdh
dGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkpOwotICAgIGJvb2wgZGlkU3Vz
cGVuZFByZXZpb3VzUGFnZSA9IG5hdmlnYXRpb24gPyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lv
bmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCgpLCBzaG91bGREZWxheUNsb3Np
bmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpIDogZmFsc2U7CisgICAg
Ym9vbCBkaWRTdXNwZW5kUHJldmlvdXNQYWdlID0gbmF2aWdhdGlvbiA/IHN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUoKm5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3Ms
IG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3Vs
ZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKSA6IGZhbHNlOwogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3By
b3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQ
cm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5n
RGF0YVN0b3JlOjpZZXMpOwogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUg
dG8gcmV0dXJuIHRvIHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgpA
QCAtNzgyMiw5ICs3ODIyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyCiAgICAgQVNTRVJU
KG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRp
b24pOwogI2VuZGlmCiAgICAgcGFnZUNsaWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUobGF5ZXJUcmVlQ29udGV4dCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJz
dExheWVyRmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBE
cmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24pOworI2VuZGlmCisgICAgcGFnZUNsaWVu
dCgpLmRpZEZpcnN0TGF5ZXJGbHVzaChsYXllclRyZWVDb250ZXh0KTsKIAogICAgIGlmIChtX2xh
c3RTdXNwZW5kZWRQYWdlKQotICAgICAgICBtX2xhc3RTdXNwZW5kZWRQYWdlLT5wYWdlRW50ZXJl
ZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgICAgIG1fbGFzdFN1c3BlbmRlZFBh
Z2UtPnBhZ2VEaWRGaXJzdExheWVyRmx1c2goKTsKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9Q
cmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDk3MTM2ZDUwMWI0Li42NGFkMjAxYTg2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNzksNiArMTE3OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXll
clRyZWVDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CisgICAgdm9pZCBkaWRGaXJzdExheWVyRmx1
c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogCiAgICAgdm9pZCBhZGRFZGl0Q29tbWFuZChX
ZWJFZGl0Q29tbWFuZFByb3h5Jik7CiAgICAgdm9pZCByZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0
Q29tbWFuZFByb3h5Jik7CkBAIC0xNzQxLDcgKzE3NDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlSGlkZGVuUGFnZVRocm90dGxp
bmdBdXRvSW5jcmVhc2VzKCk7CiAKLSAgICBib29sIHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoQVBJOjpOYXZpZ2F0aW9uJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBt
YWluRnJhbWVJRCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBib29sIHN1
c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpOwogCiAgICAg
ZW51bSBjbGFzcyBSZXNldFN0YXRlUmVhc29uIHsKICAgICAgICAgUGFnZUludmFsaWRhdGVkLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRl
eCBmMGNjMzhhNDg5NC4uZjk5OWRiYThhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xNTIsNiArMTUyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaXJzdExh
eWVyRmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRy
PFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3Jl
KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBkN2RhYzAyNTI4NS4u
ZGJjZDY4MTlkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KQEAgLTUzMyw2ICs1MzMsMTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBs
YXkKICAgICBtX2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIocmVuZGVy
TGF5ZXIpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRGaXJzdExheWVyRmx1c2goY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoIWxh
eWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpKTsKKworICAgIENBTGF5ZXIgKnJlbmRlckxheWVyID0g
W0NBTGF5ZXIgX3dlYl9yZW5kZXJMYXllcldpdGhDb250ZXh0SUQ6bGF5ZXJUcmVlQ29udGV4dC5j
b250ZXh0SURdOworICAgIG1faW1wbC0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
ckFmdGVyRmx1c2gocmVuZGVyTGF5ZXIpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewogICAgIG1faW1wbC0+c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
LmgKaW5kZXggODNjNzBjZmMxMTMuLmUyMjgyZWIzZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBj
b25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBM
YXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaXJzdExheWVyRmx1c2go
dWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNzFlNDVhMjYx
YjAuLjVmYTY3Yzc4ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAt
MTEzLDYgKzExMywxMSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6
OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NAogICAgIG1fd2ViUGFnZVBy
b3h5LnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOwog
fQogCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZEZpcnN0TGF5
ZXJGbHVzaCh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBMYXllclRy
ZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIG1fd2ViUGFnZVByb3h5LmRpZEZp
cnN0TGF5ZXJGbHVzaChsYXllclRyZWVDb250ZXh0KTsKK30KKwogdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVHZW9tZXRyeSgpCiB7CiAgICAgQVNTRVJU
KG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODgzZWYxZjVmMmEuLjc4NTQxM2Jm
NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKQEAgLTc5LDYgKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNjcm9sbERlbHRhKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZEVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpIHsgfQorCiAgICAgLy8gRklY
TUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNl
UmVwYWludCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFj
a0lEKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBmNjdmMjc5MmI1ZS4uYTI1MzA4NTNiMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01ODU3LDYgKzU4NTcs
OSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIGlm
ICghZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2Ry
YXdpbmdBcmVhKQorICAgICAgICBtX2RyYXdpbmdBcmVhLT5zZW5kRW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CisKICAgICBBU1NFUlQoIWZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgp
KTsKICAgICB1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb246OlByb2Nlc3NT
d2FwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA5Mjhl
YzJhMzVhNS4uODhhNGY5NWIwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oCkBAIC0xMDYsNyArMTA2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRyYW5zYWN0
aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNlbmRFbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKTsKKyAgICB2b2lkIHNlbmRFbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOwogCiAgICAgdm9pZCBhZGp1c3RUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJy
aWRlOwogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKQEAgLTE2OSw2ICsxNzAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50IHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNTY2FsaW5nVmlld1RvRml0RG9jdW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV9uZWVkc1NlbmREaWRGaXJzdExheWVyRmx1c2ggeyB0cnVlIH07CiB9OwogCiBpbmxp
bmUgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRkTWlsZXN0b25lc1RvRGlz
cGF0Y2goT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gcGFpbnRNaWxlc3RvbmVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDljMDg4N2U2
OTNlLi5lNmE4NzljMGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtOTAsNiArOTAsOSBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogCiAgICAgdXBk
YXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKTsKKworICAgIGlmICghcGFyYW1ldGVycy5pc1Byb2Nlc3NTd2FwKQorICAgICAg
ICBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CiB9CiAKIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEoKQpAQCAtOTcsMTQgKzEwMCwxNCBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
flRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKICAgICBpbnZhbGlkYXRlUmVuZGVyaW5n
VXBkYXRlUnVuTG9vcE9ic2VydmVyKCk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKQor
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2VuZERpZEZpcnN0TGF5ZXJGbHVz
aElmTmVlZGVkKCkKIHsKICAgICBpZiAoIW1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKKyAg
ICBpZiAoIW1fbmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7Cisg
ICAgbV9uZWVkc1NlbmREaWRGaXJzdExheWVyRmx1c2ggPSBmYWxzZTsKIAogICAgIC8vIExldCB0
aGUgZmlyc3QgY29tbWl0IGNvbXBsZXRlIGJlZm9yZSBzZW5kaW5nLgogICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKQEAg
LTExMiwxMCArMTE1LDIxIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
bmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKICAgICAg
ICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX2xheWVySG9zdGluZ0NvbnRleHQtPmNv
bnRleHRJRCgpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpFbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RGlkRmlyc3RMYXllckZsdXNoKDAs
IGxheWVyVHJlZUNvbnRleHQpKTsKICAgICB9KTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRl
ZCgpCit7CisgICAgaWYgKCFtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUgPSBmYWxzZTsKKworICAgIExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29u
dGV4dDsKKyAgICBsYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29u
dGV4dC0+Y29udGV4dElEKCk7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6
RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7Cit9
CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSgp
CiB7CiB9CkBAIC00ODMsNyArNDk3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6dXBkYXRlUmVuZGVyaW5nKFVwZGF0ZVJlbmRlcmluZ1R5cGUgZmx1c2hUeXAKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChkaWRGbHVzaEFsbEZyYW1lcykgewotICAgICAgICAgICAgc2Vu
ZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpOworICAgICAgICAgICAg
c2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCk7CiAgICAgICAgICAgICBpbnZhbGlkYXRl
UmVuZGVyaW5nVXBkYXRlUnVuTG9vcE9ic2VydmVyKCk7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396006</attachid>
            <date>2020-04-09 14:05:37 -0700</date>
            <delta_ts>2020-04-09 14:22:15 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>210297_PSON_Accelerated_Compositing_wip.patch</filename>
            <type>text/plain</type>
            <size>25268</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpp
bmRleCA3ZjlkOGUxOWJlOC4uZDg5YTY0ZTMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBv
cnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC0xMjEsNiArMTIyLDExIEBAIC0gKHZvaWQp
ZGlzcGxheQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
CisgICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFjZS1iYWNr
ZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdoaWNoIGlz
IGNvbmZ1c2luZy4KKyAgICAvLyBTbyB0byBrbm93IGlmIHdlJ3JlIGRyYXdpbmcgb24gdGhlIENQ
VSBvciBHUFUsIGp1c3QgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSByZWd1bGFyIG9sZCBiaXRtYXAg
Y29udGV4dC4KKyAgICBib29sIHVzZXNDUFVEcmF3aW5nID0gQ0dDb250ZXh0R2V0VHlwZShjb250
ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKKyAgICBXVEZMb2dBbHdheXMoIldlYlNpbXBs
ZUxheWVyICVwIHJlcXVlc3RlZCBHUFUgZHJhd2luZzogJWQgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIHNlbGYuYWNjZWxlcmF0ZXNEcmF3aW5nLCAhdXNlc0NQVURyYXdpbmcpOworCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocHRocmVhZF9tYWluX25wKCkpCiAgICAgICAg
IFdlYlRocmVhZExvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IGNiN2ZiZjkzZTMwLi4zODY3OTQ2OTdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC00MzIsNiArNDMyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApOwogCiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKENBTGF5ZXIgKik7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICopOwogICAgIENBTGF5ZXIgKmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQo
KTsgfQogCiAgICAgdm9pZCBzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFpbFZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDc2ZGZm
ZmU3M2NjLi43ZjkxMmVhMDRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KQEAgLTM4MTEsNiArMzgxMSwyMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsK
ICAgICBbcm9vdExheWVyIHdlYl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICAvLyBUaGlzIGlz
IHRoZSBwcm9jZXNzLXN3YXAgY2FzZS4gV2UgYWRkIHRoZSBuZXcgbGF5ZXIgYmVoaW5kIHRoZSBl
eGlzdGluZyByb290IGxheWVyLgorICAgIC8vIFRoaXMgd2F5LCB0aGUgbmV3IGxheWVyIGdldHMg
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnV0IHdvbid0IGJlIHZpc2libGUgdW50aWwKKyAgICAv
LyBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyQWZ0ZXJGbHVzaCgpIGlzIGNhbGxl
ZCwgaW4gb3JkZXIgdG8gcHJldmVudCBmbGFzaGluZy4KKyAgICBpZiAobV9yb290TGF5ZXIgJiYg
cm9vdExheWVyKSB7CisgICAgICAgIGlmIChtX3RodW1ibmFpbFZpZXcpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgICAgICBbQ0FUcmFu
c2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworCisgICAgICAgIFtbbV9sYXllckhvc3Rp
bmdWaWV3IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKworICAg
ICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgbV9yb290TGF5ZXIgPSByb290TGF5ZXI7CiAKICAgICBpZiAobV90aHVtYm5haWxWaWV3KSB7
CkBAIC0zODI2LDYgKzM4NDIsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1Jvb3RMYXllcihDQUxheWVyICpyb290TGF5ZXIpCiAgICAgW0NBVHJhbnNhY3Rp
b24gY29tbWl0XTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqcm9vdExheWVyKQoreworICAgIG1fcm9v
dExheWVyID0gbnVsbHB0cjsgLy8gTWFrZSBzdXJlIHdlIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGxh
eWVyLgorICAgIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIocm9vdExheWVyKTsK
K30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGh1bWJuYWlsVmlldyhfV0tUaHVtYm5haWxWaWV3
ICp0aHVtYm5haWxWaWV3KQogewogICAgIEFTU0VSVCghbV90aHVtYm5haWxWaWV3IHx8ICF0aHVt
Ym5haWxWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApp
bmRleCBkNTExOTI2NjQ5MC4uNWIwYjhkZWU5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIC8v
IEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZpcnR1YWwgdm9pZCBl
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0
YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgLyogYmFja2luZ1N0b3Jl
U3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaXJzdExheWVyRmx1c2godWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJRCAqLywg
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZp
cnR1YWwgdm9pZCBkaWRVcGRhdGVHZW9tZXRyeSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiOGI1MTdl
ZmQ4ZC4uYmNhNjA1NmVhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNyBAQAogbWVzc2FnZXMg
LT4gRHJhd2luZ0FyZWFQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5
ZXJUcmVlQ29udGV4dCBjb250ZXh0KQogICAgIFVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4
dCBjb250ZXh0KQorICAgIERpZEZpcnN0TGF5ZXJGbHVzaCh1aW50NjRfdCBiYWNraW5nU3RvcmVT
dGF0ZUlELCBXZWJLaXQ6OkxheWVyVHJlZUNvbnRleHQgY29udGV4dCkKICAgICBEaXNwYXRjaFBy
ZXNlbnRhdGlvbkNhbGxiYWNrc0FmdGVyRmx1c2hpbmdMYXllcnMoVmVjdG9yPFdlYktpdDo6Q2Fs
bGJhY2tJRD4gY2FsbGJhY2tJRHMpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYTBiNzAzYzJkZmQuLjhhOWQ5YzZiY2UwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNTAsNiArMzUwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0
IExheWVyVHJlZUNvbnRleHQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApp
bmRleCBmYzQ3ZDIzNDUwOC4uNWQ2N2RlZjJhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtOTQsMTIgKzk0LDEyIEBAIHN0YXRpYyBj
b25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVX
aGlsZVN1c3BlbmRlZCgpCiB9CiAjZW5kaWYKIAotU3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5k
ZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50
aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKK1N1c3BlbmRlZFBhZ2VQcm94
eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RM
YXllckZsdXNoKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX3dlYlBhZ2VJRChwYWdlLndl
YlBhZ2VJRCgpKQogICAgICwgbV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAgICAgLCBtX21h
aW5GcmFtZUlEKG1haW5GcmFtZUlEKQotICAgICwgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxF
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQorICAgICwgbV9zaG91bGREZWxheUNs
b3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaChzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5
ZXJGbHVzaCkKICAgICAsIG1fc3VzcGVuc2lvblRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCkKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICwgbV9zdXNwZW5zaW9uQWN0aXZpdHkobV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlBhZ2Ugc3VzcGVuc2lvbiBmb3IgYmFjay9m
b3J3YXJkIGNhY2hlIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKSkKQEAgLTE4Myw5ICsxODMsOSBAQCB2
b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlKCkpOwogfQogCi12b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6cGFnZUVudGVyZWRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6cGFn
ZURpZEZpcnN0TGF5ZXJGbHVzaCgpCiB7Ci0gICAgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBTaG91bGREZWxheUNsb3NpbmdVbnRp
bEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vOworICAgIG1fc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggPSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaDo6Tm87CiAKICAgICBpZiAobV9zaG91bGRDbG9zZVdoZW5FbnRlcmluZ0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKSB7CiAgICAgICAgIC8vIFdlIG5lZWRlZCB0aGUgc3Vz
cGVuZGVkIHBhZ2UgdG8gc3RheSBhbGl2ZSB0byBhdm9pZCBmbGFzaGluZy4gTm93IHdlIGNhbiBn
ZXQgcmlkIG9mIGl0LgpAQCAtMjAwLDggKzIwMCw4IEBAIGJvb2wgU3VzcGVuZGVkUGFnZVByb3h5
OjpwYWdlSXNDbG9zZWRPckNsb3NpbmcoKSBjb25zdAogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94
eTo6Y2xvc2VXaXRob3V0Rmxhc2hpbmcoKQogewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgIiVwIC0gU3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZVdpdGhvdXRGbGFzaGluZygpIHNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZT8g
JWQiLCB0aGlzLCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGU6Olllcyk7Ci0gICAgaWYgKG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50
aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID09IFNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6WWVzKSB7CisgICAgUkVM
RUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3Nl
V2l0aG91dEZsYXNoaW5nKCkgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g/
ICVkIiwgdGhpcywgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBT
aG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzKTsKKyAgICBpZiAobV9z
aG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBTaG91bGREZWxheUNsb3Np
bmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzKSB7CiAgICAgICAgIG1fc2hvdWxkQ2xvc2VXaGVu
RW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9IHRydWU7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5o
CmluZGV4IGVmN2FhMmQyOWE0Li41MjJiZTQxNWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAj
ZW5kaWYKIAotZW51bSBjbGFzcyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA6IGJvb2wgeyBObywgWWVzIH07CiAK
IGNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eSBmaW5hbDogcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgU2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBTdXNw
ZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRp
bEZpcnN0TGF5ZXJGbHVzaCk7CiAgICAgflN1c3BlbmRlZFBhZ2VQcm94eSgpOwogCiAgICAgc3Rh
dGljIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9j
ZXNzKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBX
ZWJzaXRlRGF0YVN0b3JlJik7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdh
aXRVbnRpbFJlYWR5VG9VbnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdXNwZW5kZWRQ
YWdlUHJveHkqKT4mJik7CiAgICAgdm9pZCB1bnN1c3BlbmQoKTsKIAotICAgIHZvaWQgcGFnZUVu
dGVyZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAgIHZvaWQgcGFnZURpZEZpcnN0
TGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgY2xvc2VXaXRob3V0Rmxhc2hpbmcoKTsKIAogI2lmIEhB
VkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZh
dGU6CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBtX21haW5GcmFtZUlEOwogICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNl
IH07Ci0gICAgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlIHsgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlOjpObyB9OworICAgIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RM
YXllckZsdXNoIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggeyBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6Tm8gfTsKICAgICBib29sIG1fc2hv
dWxkQ2xvc2VXaGVuRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSB7IGZhbHNlIH07
CiAKICAgICBTdXNwZW5zaW9uU3RhdGUgbV9zdXNwZW5zaW9uU3RhdGUgeyBTdXNwZW5zaW9uU3Rh
dGU6OlN1c3BlbmRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGIxNjYzZTljYmEwLi5kOTRjNzgyMjVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
LCBQcm8KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxl
TWVzc2FnZShtZXNzYWdlLm1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlLm1lc3NhZ2VCb2R5LmdldCgpKS5nZXQoKSkpKTsKIH0K
IAotYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFt
ZUlELCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUpCitib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
bWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggc2hv
dWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpCiB7CiAgICAgbV9zdXNwZW5kZWRQ
YWdlS2VwdFRvUHJldmVudEZsYXNoaW5nID0gbnVsbHB0cjsKICAgICBtX2xhc3RTdXNwZW5kZWRQ
YWdlID0gbnVsbHB0cjsKQEAgLTg0Myw3ICs4NDMsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9w
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBuZWVkc1N1c3BlbmRl
ZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVy
aW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6OlllczsKKyAgICBib29sIG5lZWRzU3VzcGVu
ZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExh
eWVyRmx1c2ggPT0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g6OlllczsK
ICAgICBpZiAoIW5lZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nICYmICghZnJvbUl0
ZW0gfHwgIXNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkpIHsKICAgICAgICAgaWYgKCFmcm9t
SXRlbSkKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBw
YWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtODUzLDcg
Kzg1Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxl
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgfQogCiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VV
bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1h
aW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVu
ZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBz
aG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAKICAgICBMT0coUHJvY2Vz
c1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBh
Z2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1J
RCgpLmxvZ1N0cmluZygpIDogMCk7CiAKQEAgLTMyNzcsMTIgKzMyNzcsMTIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0gJm1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkpOwogCi0gICAgYXV0byBzaG91bGREZWxheUNsb3NpbmdVbnRp
bEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBTaG91bGREZWxheUNsb3NpbmdV
bnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vOworICAgIGF1dG8gc2hv
dWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggPSBTaG91bGREZWxheUNsb3NpbmdV
bnRpbEZpcnN0TGF5ZXJGbHVzaDo6Tm87CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIE9uIG1h
Y09TLCB3aGVuIG5vdCB1c2luZyBVSS1zaWRlIGNvbXBvc2l0aW5nLCB3ZSBuZWVkIHRvIG1ha2Ug
c3VyZSB3ZSBkbyBub3QgY2xvc2UgdGhlIHBhZ2UgaW4gdGhlIHByZXZpb3VzIHByb2Nlc3MgdW50
aWwgd2UndmUKICAgICAvLyBlbnRlcmVkIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciB0aGUg
bmV3IHBhZ2Ugb3Igd2Ugd2lsbCBmbGFzaCBvbiBuYXZpZ2F0aW9uLgogICAgIGlmIChkcmF3aW5n
QXJlYSgpLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKQotICAg
ICAgICBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUgPSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGU6OlllczsKKyAgICAgICAgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVy
Rmx1c2ggPSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzOwogI2Vu
ZGlmCiAKICAgICBpZiAobV9pc0xheWVyVHJlZUZyb3plbkR1ZVRvU3dpcGVBbmltYXRpb24pCkBA
IC0zMjkyLDcgKzMyOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQ
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogCiAgICAgbV9wcm9j
ZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgYXV0byogbmF2aWdhdGlvbiA9IG5h
dmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25J
RCgpKTsKLSAgICBib29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZpZ2F0aW9uID8gc3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJblByZXZp
b3VzUHJvY2VzcywgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKSA6IGZhbHNlOworICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmln
YXRpb24gPyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJh
bWVJREluUHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkg
OiBmYWxzZTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURh
dGFTdG9yZS5wdHIoKSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0
YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQ
cm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlz
IG5vIHdheSB3ZSdsbCBiZSBhYmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlv
dXMgcGFnZSBzbyBjbG9zZSBpdC4KQEAgLTc4MjIsOSArNzgyMiwxNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250
ZXh0JiBsYXllcgogICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0Fy
ZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKTsKICNlbmRpZgogICAgIHBhZ2VDbGllbnQoKS5lbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQm
IGxheWVyVHJlZUNvbnRleHQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFTU0VSVChtX2Ry
YXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKTsK
KyNlbmRpZgorICAgIHBhZ2VDbGllbnQoKS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29u
dGV4dCk7CiAKICAgICBpZiAobV9sYXN0U3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9sYXN0U3Vz
cGVuZGVkUGFnZS0+cGFnZUVudGVyZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAg
ICAgICBtX2xhc3RTdXNwZW5kZWRQYWdlLT5wYWdlRGlkRmlyc3RMYXllckZsdXNoKCk7CiAgICAg
bV9zdXNwZW5kZWRQYWdlS2VwdFRvUHJldmVudEZsYXNoaW5nID0gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NzEzNmQ1MDFiNC4uNjRhZDIw
MWE4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTc5LDYg
KzExNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBl
eGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOworICAg
IHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKIAogICAg
IHZvaWQgYWRkRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSYpOwogICAgIHZvaWQgcmVt
b3ZlRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSYpOwpAQCAtMTc0MSw3ICsxNzQyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKICAgICB2b2lkIHVw
ZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogCi0gICAgYm9vbCBzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSk7CisgICAgYm9vbCBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2
aWdhdGlvbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKTsKIAogICAgIGVudW0gY2xhc3MgUmVzZXRTdGF0ZVJlYXNvbiB7CiAgICAg
ICAgIFBhZ2VJbnZhbGlkYXRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZjBjYzM4YTQ4OTQuLmY5OTlkYmE4YTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTUy
LDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2b2lkIGV4aXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0
aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVlbEV2ZW50
V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KaW5kZXggZDdkYWMwMjUyODUuLmRiY2Q2ODE5ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01MzMsNiArNTMzLDE0IEBA
IHZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5CiAgICAgbV9pbXBsLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKHJlbmRlckxheWVyKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRl
eHQpCit7CisgICAgQVNTRVJUKCFsYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKSk7CisKKyAgICBD
QUxheWVyICpyZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4
dElEOmxheWVyVHJlZUNvbnRleHQuY29udGV4dElEXTsKKyAgICBtX2ltcGwtPnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXJBZnRlckZsdXNoKHJlbmRlckxheWVyKTsKK30KKwogdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKIHsKICAg
ICBtX2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIobmlsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDgzYzcwY2ZjMTEzLi5lMjI4MmViM2Y5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC00Niw2ICs0Niw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3Qg
YmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2lu
Z1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8s
IGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRqdXN0VHJh
bnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Lm1tCmluZGV4IDcxZTQ1YTI2MWIwLi41ZmE2N2M3OGVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkubW0KQEAgLTExMyw2ICsxMTMsMTEgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1
aW50NjQKICAgICBtX3dlYlBhZ2VQcm94eS51cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShsYXllclRyZWVDb250ZXh0KTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5OjpkaWRGaXJzdExheWVyRmx1c2godWludDY0X3QgLyogYmFja2luZ1N0b3JlU3Rh
dGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKK3sKKyAg
ICBtX3dlYlBhZ2VQcm94eS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29udGV4dCk7Cit9
CisKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2Vv
bWV0cnkoKQogewogICAgIEFTU0VSVChtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4
IDg4M2VmMWY1ZjJhLi43ODU0MTNiZjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgPSAwOwogCisg
ICAgdmlydHVhbCB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVk
ZWQoKSB7IH0KKwogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgog
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9y
Y2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjY3ZjI3OTJiNWUuLmEy
NTMwODUzYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNTg1Nyw2ICs1ODU3LDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdl
YkZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBpZiAobV9kcmF3aW5nQXJlYSkKKyAgICAgICAgbV9kcmF3aW5nQXJlYS0+
c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpOworCiAgICAgQVNT
RVJUKCFmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmNyZWF0aW5n
SW5pdGlhbEVtcHR5RG9jdW1lbnQoKSk7CiAgICAgdW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVl
RnJlZXplUmVhc29uOjpQcm9jZXNzU3dhcCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmgKaW5kZXggOTI4ZWMyYTM1YTUuLjg4YTRmOTViMGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMTA2LDcgKzEwNiw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVk
KCk7CisgICAgdm9pZCBzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVk
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZW5kRGlkRmlyc3RMYXllckZsdXNoSWZOZWVkZWQoKTsK
IAogICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CkBAIC0x
NjksNiArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2NhbGVWaWV3VG9GaXRE
b2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU2NhbGluZ1ZpZXdUb0ZpdERvY3VtZW50
IHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSB7IHRydWUgfTsKKyAgICBib29sIG1fbmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNo
IHsgdHJ1ZSB9OwogfTsKIAogaW5saW5lIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmFkZE1pbGVzdG9uZXNUb0Rpc3BhdGNoKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmU+IHBhaW50TWlsZXN0b25lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQppbmRleCA5YzA4ODdlNjkzZS4uZTZhODc5YzBhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTkwLDYgKzkwLDkgQEAgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2Um
IHdlYlBhZ2UsIGMKIAogICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRD
b2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CisKKyAgICBpZiAoIXBhcmFtZXRlcnMu
aXNQcm9jZXNzU3dhcCkKKyAgICAgICAgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGVJZk5lZWRlZCgpOwogfQogCiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKQEAgLTk3LDE0ICsxMDAsMTQgQEAgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6On5UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCiAg
ICAgaW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogfQogCi12b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZUlmTmVlZGVkKCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OnNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Jvb3RMYXll
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUpCisgICAgaWYgKCFtX25lZWRzU2VuZERpZEZpcnN0TGF5ZXJGbHVz
aCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSA9IGZhbHNlOworICAgIG1fbmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoID0g
ZmFsc2U7CiAKICAgICAvLyBMZXQgdGhlIGZpcnN0IGNvbW1pdCBjb21wbGV0ZSBiZWZvcmUgc2Vu
ZGluZy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7CkBAIC0xMTIsMTAgKzExNSwyMSBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlm
TmVlZGVkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBMYXllclRyZWVDb250ZXh0IGxh
eWVyVHJlZUNvbnRleHQ7CiAgICAgICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9s
YXllckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXll
clRyZWVDb250ZXh0KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6
OkRpZEZpcnN0TGF5ZXJGbHVzaCgwLCBsYXllclRyZWVDb250ZXh0KSk7CiAgICAgfSk7CiB9CiAK
K3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKQoreworICAgIGlmICghbV9uZWVkc1NlbmRFbnRlckFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQorICAgICAgICByZXR1cm47CisgICAgbV9uZWVkc1Nl
bmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7CisKKyAgICBMYXllclRy
ZWVDb250ZXh0IGxheWVyVHJlZUNvbnRleHQ7CisgICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0
SUQgPSBtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OkRyYXdpbmdBcmVhUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwg
bGF5ZXJUcmVlQ29udGV4dCkpOworfQorCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpzZXROZWVkc0Rpc3BsYXkoKQogewogfQpAQCAtNDgzLDcgKzQ5Nyw3IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyhVcGRhdGVSZW5kZXJp
bmdUeXBlIGZsdXNoVHlwCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGlkRmx1c2hBbGxGcmFt
ZXMpIHsKLSAgICAgICAgICAgIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZO
ZWVkZWQoKTsKKyAgICAgICAgICAgIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOwog
ICAgICAgICAgICAgaW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwog
ICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396010</attachid>
            <date>2020-04-09 14:22:16 -0700</date>
            <delta_ts>2020-04-10 12:14:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210297-20200409142216.patch</filename>
            <type>text/plain</type>
            <size>29711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEwNmUxNDEyMzYwYzJlMWZh
Y2M1MzI4ZjY5ODk0ZDUxYjAyNGFmZDQuLmVkODg3OTY1NzVkNDg0MDA5NDIyZDhiY2NiMGI4YjRj
MGFlOWZjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDQtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGaXJzdCByZW5kZXIgYWZ0ZXIgYSBw
cm9jZXNzIHN3YXAgZG9lcyBub3QgdXNlIGFjY2VsZXJhdGVkIHJlbmRlcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMjk3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MTQzMjUxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IGZsYXNoaW5nIG9uIG5hdmlnYXRpb24gd2hlbiBw
cm9jZXNzLXN3YXBwaW5nLCB3ZSB3ZXJlIGRlbGF5aW5nIHRoZQorICAgICAgICBEcmF3aW5nQXJl
YVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIElQQyBtZXNzYWdlIGZyb20g
dGhlIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFVJUHJvY2VzcywgdW50aWwgdGhlIG5ldyBw
YWdlIGlzIHJlYWR5IHRvIGRpc3BsYXkuIFRoZSByZWFzb24gd2UgZGlkIHRoaXMKKyAgICAgICAg
aXMgdGhhdCB0aGUgRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBJUEMgbWVzc2FnZSBl
bmRzIHVwIHNldHRpbmcgdGhlIHJvb3QKKyAgICAgICAgQ0FMYXllciBzbyB0aGUgbmV3IGNvbnRl
bnQgd291bGQgYmVjb21lIHZpc2libGUgb24gc2NyZWVuLiBIb3dldmVyLCBhbm90aGVyIHNpZGUK
KyAgICAgICAgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB3ZSB3b3VsZCBhbHNvIGRlbGF5IHRoZSBw
b2ludCB1bnRpbCB3aGljaCB3ZSBnZXQKKyAgICAgICAgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nLCB3
aGljaCB3b3VsZCBuZWdhdGl2ZWx5IGltcGFjdCBlYXJseSBwYWdlIGxvYWQgcGVyZm9ybWFuY2Uu
CisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3
ZXJlIG1hZGU6CisgICAgICAgIDEuIFdlIG5vIGxvbmdlciBkZWxheSB0aGUgRHJhd2luZ0FyZWFQ
cm94eTo6RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBJUEMuCisgICAgICAgICAgIElu
IG5vbiBwcm9jZXNzLXN3YXAgY2FzZXMsIHdlIHNlbmQgaXQgYXMgc29vbiBhcyB0aGUgRHJhd2lu
Z0FyZWEgaXMgY29uc3RydWN0ZWQuCisgICAgICAgICAgIEluIHByb2Nlc3Mtc3dhcCBjYXNlcywg
d2Ugc2VuZCBpdCBhcyBzb29uIGFzIHdlIGNvbW1pdCB0aGUgbG9hZCBzaW5jZSB0aGlzIGlzCisg
ICAgICAgICAgIHdoZW4gdGhlIHByb3Zpc2lvbmFsIGRyYXdpbmcgYXJlYSBnZXRzIGNvbW1pdHRl
ZCBhbmQgaGFwcGVucyBiZWZvcmUgd2UgaGF2ZQorICAgICAgICAgICBhbnkgY29udGVudCB0byBw
YWludC4KKyAgICAgICAgMi4gSW4gdGhlIFVJUHJvY2Vzcywgd2hlbiB3ZSBnZXQgdGhlIERyYXdp
bmdBcmVhUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUKKyAgICAgICAgICAg
SVBDIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSByb290IGxheWVyLCB3ZSBhZGQgdGhlIG5ldyBvbmUg
YmVoaW5kIHRoZSBleGlzdGluZyBvbmUKKyAgICAgICAgICAgaW5zdGVhZCBvZiByZXBsYWNpbmcg
dGhlIGV4aXN0aW5nIG9uZS4gQXMgYSByZXN1bHQsIHRoZSBuZXcgbGF5ZXIgd2lsbCBnZXQKKyAg
ICAgICAgICAgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnV0IHdpbGwgbm90IGJlIHZpc2libGUg
b24gc2NyZWVuIHlldC4KKyAgICAgICAgMy4gSW50cm9kdWNlIGEgbmV3IERyYXdpbmdBcmVhUHJv
eHk6OkRpZEZpcnN0TGF5ZXJGbHVzaCBJUEMgd2hpY2ggZ2V0cyBzZW5kIGF0IHRoZQorICAgICAg
ICAgICBwb2ludCB3aGVyZSB3ZSB1c2VkIHRvIHNlbmQgdGhlIEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUgSVBDLCBtZWFuaW5nIHdoZXJlCisgICAgICAgICAgIHRoZSBuZXcgY29udGVu
dCBpcyByZWFkeSB0byBkaXNwbGF5LiBXaGVuIHRoZSBVSVByb2Nlc3MgcmVjZWl2ZXMgdGhpcyBJ
UEMsIGl0CisgICAgICAgICAgIGFjdHVhbGx5IHJlcGxhY2VzIHRoZSByb290IGxheWVyIHdpdGgg
dGhlIG5ldyBsYXllciBzbyB0aGF0IHRoZSBuZXcgY29udGVudCB2aXNpYmxlLgorCisgICAgICAg
IEFmdGVyIHRoaXMgcGF0Y2gsIG91ciBDQUxheWVycyBnZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRp
bmcgcmlnaHQgYXdheSBhZnRlciBhCisgICAgICAgIHByb2Nlc3Mtc3dhcCBidXQgd2Ugc3RpbGwg
ZG8gbm90IHNlZSBhbnkgYmxhbmstZmxhc2hpbmcgb24gbmF2aWdhdGlvbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2gpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHk6OmRpZEZpcnN0TGF5ZXJGbHVzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6ZGlkRmlyc3RMYXllckZsdXNoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VEaWRGaXJzdExheWVyRmx1c2gpOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlV2l0aG91dEZsYXNoaW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaXJzdExheWVyRmx1c2gpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlk
Rmlyc3RMYXllckZsdXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXllckZsdXNo
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcp
OgorCiAyMDIwLTA0LTA5ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gQ2xlYW4tdXAgdXNlIG9mIGRlcHJlY2F0ZWQgR3RrQWN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCBjYjdmYmY5
M2UzMDBjMTI2ZjgwZGE0NzRlOTZhMmUyYzliYjRkYjc4Li4zODY3OTQ2OTdjY2ViNDRmZDk4NGJj
Y2I1OTk5M2E5M2RlZDU4MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKQEAgLTQzMiw2ICs0MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0b29sVGlw
Q2hhbmdlZChjb25zdCBTdHJpbmcmIG9sZFRvb2xUaXAsIGNvbnN0IFN0cmluZyYgbmV3VG9vbFRp
cCk7CiAKICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoQ0FMYXll
ciAqKTsKKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXJBZnRlckZs
dXNoKENBTGF5ZXIgKik7CiAgICAgQ0FMYXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNl
dFRodW1ibmFpbFZpZXcoX1dLVGh1bWJuYWlsVmlldyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNzZkZmZmZTczY2NkMDczNGFjMGY5MjM3
MDBhYWVmNzc3MDViZWE5NC4uN2Y5MTJlYTA0ZDJlODM1ZWMwYTA3MzJlOWFjYjllMGVkZjYwODAw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTM4MTEsNiArMzgxMSwyMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKIHsKICAgICBbcm9vdExheWVyIHdl
Yl9kaXNhYmxlQWxsQWN0aW9uc107CiAKKyAgICAvLyBUaGlzIGlzIHRoZSBwcm9jZXNzLXN3YXAg
Y2FzZS4gV2UgYWRkIHRoZSBuZXcgbGF5ZXIgYmVoaW5kIHRoZSBleGlzdGluZyByb290IGxheWVy
LgorICAgIC8vIFRoaXMgd2F5LCB0aGUgbmV3IGxheWVyIGdldHMgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgYnV0IHdvbid0IGJlIHZpc2libGUgdW50aWwKKyAgICAvLyBzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nUm9vdExheWVyQWZ0ZXJGbHVzaCgpIGlzIGNhbGxlZCwgaW4gb3JkZXIgdG8gcHJl
dmVudCBmbGFzaGluZy4KKyAgICBpZiAobV9yb290TGF5ZXIgJiYgcm9vdExheWVyKSB7CisgICAg
ICAgIGlmIChtX3RodW1ibmFpbFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
W0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxl
QWN0aW9uczpZRVNdOworCisgICAgICAgIFtbbV9sYXllckhvc3RpbmdWaWV3IGxheWVyXSBpbnNl
cnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKworICAgICAgICBbQ0FUcmFuc2FjdGlv
biBjb21taXRdOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9yb290TGF5ZXIgPSBy
b290TGF5ZXI7CiAKICAgICBpZiAobV90aHVtYm5haWxWaWV3KSB7CkBAIC0zODI2LDYgKzM4NDIs
MTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cihDQUxheWVyICpyb290TGF5ZXIpCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0KIAor
dm9pZCBXZWJWaWV3SW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVy
Rmx1c2goQ0FMYXllciAqcm9vdExheWVyKQoreworICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsg
Ly8gTWFrZSBzdXJlIHdlIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGxheWVyLgorICAgIHNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIocm9vdExheWVyKTsKK30KKwogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0VGh1bWJuYWlsVmlldyhfV0tUaHVtYm5haWxWaWV3ICp0aHVtYm5haWxWaWV3KQog
ewogICAgIEFTU0VSVCghbV90aHVtYm5haWxWaWV3IHx8ICF0aHVtYm5haWxWaWV3KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCBkNTExOTI2NjQ5MGFj
OWMzZjBlOWRjYjA5YjZiMTA1ZjQ1OTdhNzBmLi41YjBiOGRlZTk4MTI5YmRiMmM1ZDdiYmRjYjI4
NzUxNTk3YmJhNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hv
dWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBM
YXllclRyZWVDb250ZXh0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8sIGNvbnN0
IExheWVyVHJlZUNvbnRleHQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RMYXllckZs
dXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKSB7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlR2VvbWV0cnkoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjhiNTE3ZWZkOGRmMWQyYTA3ODY3MTQ5
NWNkNjQ2ZDU0ODRkYmQ3My4uYmNhNjA1NmVhNmQ2ZTE0MzlkNWM0MGViMmI1MTUyNmEyZWExNWRi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yMyw2ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYVBy
b3h5IE5vdFJlZkNvdW50ZWQgewogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
dWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNv
bnRleHQpCiAgICAgVXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFj
a2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisgICAg
RGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6
TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQogICAgIERpc3BhdGNoUHJlc2VudGF0aW9uQ2FsbGJh
Y2tzQWZ0ZXJGbHVzaGluZ0xheWVycyhWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFj
a0lEcyk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBhMGI3MDNjMmRmZGE1M2RjZjdkYjM5OWZmNDFhMWU2ZjcyY2QzNDNhLi44YTlk
OWM2YmNlMDM3N2I4YjdjYzdiZTBkNjBkNDdkODczYzZmZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0zNTAsNiArMzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmly
c3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBmYzQ3ZDIzNDUw
OGM0NTdkYzE5MGVkN2M5MzQ2NDYzNWRkNGY5N2UzLi41ZDY3ZGVmMmFiZDkzNzQxOTE1NGM5MjI4
YmJkNzQ5ZjY5OWYwOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKQEAgLTk0LDEyICs5NCwxMiBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJ
UEM6OlN0cmluZ1JlZmVyZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQo
KQogfQogI2VuZGlmCiAKLVN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlk
ZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCitTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBh
Z2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgRnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkKICAg
ICA6IG1fcGFnZShwYWdlKQogICAgICwgbV93ZWJQYWdlSUQocGFnZS53ZWJQYWdlSUQoKSkKICAg
ICAsIG1fcHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpKQogICAgICwgbV9tYWluRnJhbWVJRChtYWlu
RnJhbWVJRCkKLSAgICAsIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSkKKyAgICAsIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJz
dExheWVyRmx1c2goc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpCiAgICAg
LCBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU3VzcGVu
ZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAsIG1fc3VzcGVuc2lvbkFjdGl2aXR5KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJQYWdlIHN1c3BlbnNpb24gZm9yIGJhY2svZm9yd2FyZCBjYWNoZSJf
cykubW92ZVRvVW5pcXVlUHRyKCkpCkBAIC0xODMsOSArMTgzLDkgQEAgdm9pZCBTdXNwZW5kZWRQ
YWdlUHJveHk6OmNsb3NlKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsK
IH0KIAotdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VFbnRlcmVkQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoKQordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VEaWRGaXJzdExheWVy
Rmx1c2goKQogewotICAgIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlID0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlOjpObzsKKyAgICBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGls
Rmlyc3RMYXllckZsdXNoID0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g6
Ok5vOwogCiAgICAgaWYgKG1fc2hvdWxkQ2xvc2VXaGVuRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSkgewogICAgICAgICAvLyBXZSBuZWVkZWQgdGhlIHN1c3BlbmRlZCBwYWdlIHRv
IHN0YXkgYWxpdmUgdG8gYXZvaWQgZmxhc2hpbmcuIE5vdyB3ZSBjYW4gZ2V0IHJpZCBvZiBpdC4K
QEAgLTIwMCw4ICsyMDAsOCBAQCBib29sIFN1c3BlbmRlZFBhZ2VQcm94eTo6cGFnZUlzQ2xvc2Vk
T3JDbG9zaW5nKCkgY29uc3QKIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlV2l0aG91
dEZsYXNoaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFN1
c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2VXaXRob3V0Rmxhc2hpbmcoKSBzaG91bGREZWxheUNsb3Np
bmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU/ICVkIiwgdGhpcywgbV9z
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUg
PT0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlOjpZZXMpOwotICAgIGlmIChtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6OlllcykgeworICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTd2FwcGluZywgIiVwIC0gU3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZVdpdGhvdXRGbGFzaGlu
ZygpIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoPyAlZCIsIHRoaXMsIG1f
c2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggPT0gU2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxGaXJzdExheWVyRmx1c2g6Olllcyk7CisgICAgaWYgKG1fc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxGaXJzdExheWVyRmx1c2ggPT0gU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExh
eWVyRmx1c2g6OlllcykgewogICAgICAgICBtX3Nob3VsZENsb3NlV2hlbkVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCBlZjdhYTJk
MjlhNDYxNTcwM2NhNmZhZjYxNzViOTNiYjMyMGNiMjkyLi41MjJiZTQxNWNhNTRjMDdkZDE1YWMy
MGE3MTZlNDQzOWE2YWMyNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuaApAQCAtNTAsMTIgKzUwLDEyIEBAIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
CiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNlbmRpZgogCi1lbnVt
IGNsYXNzIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRmlyc3RMYXllckZsdXNoIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogY2xhc3MgU3VzcGVu
ZGVkUGFnZVByb3h5IGZpbmFsOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdXNwZW5k
ZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOworICAgIFN1c3BlbmRlZFBhZ2VQcm94
eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZs
dXNoKTsKICAgICB+U3VzcGVuZGVkUGFnZVByb3h5KCk7CiAKICAgICBzdGF0aWMgUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViUHJvY2Vz
c1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3Rv
cmUmKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2FpdFVudGlsUmVhZHlU
b1Vuc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1c3BlbmRlZFBhZ2VQcm94eSopPiYm
KTsKICAgICB2b2lkIHVuc3VzcGVuZCgpOwogCi0gICAgdm9pZCBwYWdlRW50ZXJlZEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgdm9pZCBwYWdlRGlkRmlyc3RMYXllckZsdXNoKCk7
CiAgICAgdm9pZCBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwogCiAjaWYgSEFWRShWSVNJQklMSVRZ
X1BST1BBR0FUSU9OX1ZJRVcpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1fbWFpbkZyYW1lSUQ7CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLSAgICBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9z
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUg
eyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGU6Ok5vIH07CisgICAgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggbV9z
aG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCB7IFNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRmlyc3RMYXllckZsdXNoOjpObyB9OwogICAgIGJvb2wgbV9zaG91bGRDbG9zZVdoZW5F
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHsgZmFsc2UgfTsKIAogICAgIFN1c3Bl
bnNpb25TdGF0ZSBtX3N1c3BlbnNpb25TdGF0ZSB7IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGlu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjE2NjNl
OWNiYTAyOTA5YzI3OTkxOTBlY2RmZTA3Y2NmMDk0ZjZhMi4uZDk0Yzc4MjI1YzUyZDY5MDJjOWQ1
OTA2YTMzNTAwYzU1ZDE4MzQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQcm8KICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNz
YWdlLm1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyhtZXNzYWdlLm1lc3NhZ2VCb2R5LmdldCgpKS5nZXQoKSkpKTsKIH0KIAotYm9vbCBXZWJQ
YWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3Vs
ZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBzaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiti
b29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxGaXJzdExheWVyRmx1c2gpCiB7CiAgICAgbV9zdXNwZW5kZWRQYWdlS2VwdFRvUHJl
dmVudEZsYXNoaW5nID0gbnVsbHB0cjsKICAgICBtX2xhc3RTdXNwZW5kZWRQYWdlID0gbnVsbHB0
cjsKQEAgLTg0Myw3ICs4NDMsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZl
bnRGbGFzaGluZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGU6OlllczsKKyAgICBib29sIG5lZWRzU3VzcGVuZGVkUGFnZVRvUHJl
dmVudEZsYXNoaW5nID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggPT0g
U2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g6OlllczsKICAgICBpZiAoIW5l
ZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nICYmICghZnJvbUl0ZW0gfHwgIXNob3Vs
ZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkpIHsKICAgICAgICAgaWYgKCFmcm9tSXRlbSkKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0i
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtODUzLDcgKzg1Myw3IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgfQogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5k
aW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwotICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVu
ZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBz
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5
PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNs
b3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHBy
b2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmlu
ZygpIDogMCk7CiAKQEAgLTMyNzcsMTIgKzMyNzcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MucHRyKCkgIT0gJm1fcHJvdmlzaW9uYWxQYWdlLT5w
cm9jZXNzKCkpOwogCi0gICAgYXV0byBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vOworICAgIGF1dG8gc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxGaXJzdExheWVyRmx1c2ggPSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5
ZXJGbHVzaDo6Tm87CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIE9uIG1hY09TLCB3aGVuIG5v
dCB1c2luZyBVSS1zaWRlIGNvbXBvc2l0aW5nLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBkbyBu
b3QgY2xvc2UgdGhlIHBhZ2UgaW4gdGhlIHByZXZpb3VzIHByb2Nlc3MgdW50aWwgd2UndmUKICAg
ICAvLyBlbnRlcmVkIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciB0aGUgbmV3IHBhZ2Ugb3Ig
d2Ugd2lsbCBmbGFzaCBvbiBuYXZpZ2F0aW9uLgogICAgIGlmIChkcmF3aW5nQXJlYSgpLT50eXBl
KCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKQotICAgICAgICBzaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Olll
czsKKyAgICAgICAgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggPSBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzOwogI2VuZGlmCiAKICAgICBp
ZiAobV9pc0xheWVyVHJlZUZyb3plbkR1ZVRvU3dpcGVBbmltYXRpb24pCkBAIC0zMjkyLDcgKzMy
OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgYXV0byogbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0
ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25JRCgpKTsKLSAgICBi
b29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZpZ2F0aW9uID8gc3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2Vzcywg
bV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQoKSwgc2hvdWxk
RGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKSA6IGZh
bHNlOworICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmlnYXRpb24gPyBzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkgOiBmYWxzZTsKICAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIo
KSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBX
ZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6
OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSds
bCBiZSBhYmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBj
bG9zZSBpdC4KQEAgLTc4MjIsOSArNzgyMiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllcgog
ICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRD
b3JlQW5pbWF0aW9uKTsKICNlbmRpZgogICAgIHBhZ2VDbGllbnQoKS5lbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNv
bnRleHQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhLT50
eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKTsKKyNlbmRpZgorICAg
IHBhZ2VDbGllbnQoKS5kaWRGaXJzdExheWVyRmx1c2gobGF5ZXJUcmVlQ29udGV4dCk7CiAKICAg
ICBpZiAobV9sYXN0U3VzcGVuZGVkUGFnZSkKLSAgICAgICAgbV9sYXN0U3VzcGVuZGVkUGFnZS0+
cGFnZUVudGVyZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAgICAgICBtX2xhc3RT
dXNwZW5kZWRQYWdlLT5wYWdlRGlkRmlyc3RMYXllckZsdXNoKCk7CiAgICAgbV9zdXNwZW5kZWRQ
YWdlS2VwdFRvUHJldmVudEZsYXNoaW5nID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NzEzNmQ1MDFiNDBhYTU4MDk3NTljNTdlNjI3NWNk
ZjVmOTI4NjMzLi42NGFkMjAxYTg2MGY0MjJmNGUyMWQwNWM0ZTA1YjUwMzJhODE1MzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE3OSw2ICsxMTc5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKKyAgICB2b2lkIGRpZEZp
cnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAKICAgICB2b2lkIGFkZEVk
aXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZUVkaXRDb21t
YW5kKFdlYkVkaXRDb21tYW5kUHJveHkmKTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAgICAgdm9pZCB1cGRhdGVIaWRkZW5Q
YWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMoKTsKIAotICAgIGJvb2wgc3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOwor
ICAgIGJvb2wgc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVz
aCk7CiAKICAgICBlbnVtIGNsYXNzIFJlc2V0U3RhdGVSZWFzb24gewogICAgICAgICBQYWdlSW52
YWxpZGF0ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCmluZGV4IGYwY2MzOGE0ODk0NzRmYjllOTY0ZmVmYzkxZTgzN2Y2MjY2ZDJjMDQuLmY5
OTlkYmE4YTMzNTk5YjFlZDFjOTIzMTM3MThhMjM4Njc5ZDQzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xNTIsNiArMTUyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRGaXJzdExheWVyRmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5k
bGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBk
N2RhYzAyNTI4NTJhNzI3ZTM2ZDExNWUwMDVkYzZkMmZlZmU4N2EyLi5kYmNkNjgxOWRkZmQ2NWQ0
ZDRjODA4ZjZkOGJkNTJjZDQ3MjY2M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC01MzMsNiArNTMzLDE0IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYgbGF5CiAgICAgbV9pbXBsLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKHJlbmRlckxheWVyKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmlyc3RM
YXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQpCit7Cisg
ICAgQVNTRVJUKCFsYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKSk7CisKKyAgICBDQUxheWVyICpy
ZW5kZXJMYXllciA9IFtDQUxheWVyIF93ZWJfcmVuZGVyTGF5ZXJXaXRoQ29udGV4dElEOmxheWVy
VHJlZUNvbnRleHQuY29udGV4dElEXTsKKyAgICBtX2ltcGwtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdSb290TGF5ZXJBZnRlckZsdXNoKHJlbmRlckxheWVyKTsKK30KKwogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKIHsKICAgICBtX2ltcGwt
PnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIobmlsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5oCmluZGV4IDgzYzcwY2ZjMTEzZmEzN2Y0ZTNlZGFmMzgwYzYzMDZkOWQ2
NGJkZWMuLmUyMjgyZWIzZjlmYWY0ZjYwMWUyYzBjNjQxY2E3NmZhZjhmOGNiNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaApAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdT
dG9yZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0
YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZp
cnN0TGF5ZXJGbHVzaCh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICovLCBjb25zdCBM
YXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpp
bmRleCA3MWU0NWEyNjFiMDRkNTAyOTllZWUzNDAwNmY5N2RjNzliOTAyYjI4Li41ZmE2N2M3OGVh
NmM2YmM1ODg0NzM2OTY4MzFmYjEyYWNhNThjODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbQpAQCAtMTEzLDYgKzExMywxMSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHk6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NAog
ICAgIG1fd2ViUGFnZVByb3h5LnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVy
VHJlZUNvbnRleHQpOwogfQogCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHk6OmRpZEZpcnN0TGF5ZXJGbHVzaCh1aW50NjRfdCAvKiBiYWNraW5nU3RvcmVTdGF0ZUlEICov
LCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIG1fd2Vi
UGFnZVByb3h5LmRpZEZpcnN0TGF5ZXJGbHVzaChsYXllclRyZWVDb250ZXh0KTsKK30KKwogdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVHZW9tZXRyeSgp
CiB7CiAgICAgQVNTRVJUKG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODgzZWYx
ZjVmMmExZmZlZWQ1ZWI1MjA0ODdlNWYwYzYwN2U4MWU0Ni4uNzg1NDEzYmY3NjRlMjFmY2QwYmJh
MmY4ODY1MjgxY2MwNzAyOWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgPSAwOwogCisgICAgdmly
dHVhbCB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSB7
IH0KKwogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZp
cnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBh
aW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjY3ZjI3OTJiNWVkYzcxNzcxOGM4
YzE2YWY0NzU4NDQ3YmI5MmU5MC4uYTI1MzA4NTNiMGFhMGQxYzVmNjBlY2Y4ZmM1NGVkMGNkZGRl
ZmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTU4NTcsNiArNTg1Nyw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFt
ZSogZnJhbWUpCiAgICAgaWYgKCFmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKG1fZHJhd2luZ0FyZWEpCisgICAgICAgIG1fZHJhd2luZ0FyZWEtPnNlbmRF
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKTsKKwogICAgIEFTU0VSVCgh
ZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5jcmVhdGluZ0luaXRp
YWxFbXB0eURvY3VtZW50KCkpOwogICAgIHVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6
ZVJlYXNvbjo6UHJvY2Vzc1N3YXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oCmluZGV4IDkyOGVjMmEzNWE1M2ZjMmFhMDNkNmNhZTc1NTNlMTk4ZTJhMTE2MzcuLjg4
YTRmOTViMGE5YzY2OTAwYWE1NGRjZjZhYTQwYmQ4ODZiZjg0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0xMDYsNyArMTA2LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCkgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKTsK
KyAgICB2b2lkIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOwogCiAg
ICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKQEAgLTE2OSw2
ICsxNzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3Vt
ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNTY2FsaW5nVmlld1RvRml0RG9jdW1lbnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9uZWVkc1NlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9uZWVkc1NlbmREaWRGaXJzdExheWVyRmx1c2ggeyB0
cnVlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
YWRkTWlsZXN0b25lc1RvRGlzcGF0Y2goT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZT4gcGFpbnRNaWxlc3RvbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCmluZGV4IDljMDg4N2U2OTNlMjg4ZWM0ZTdhM2UwMzA3ZDZkYzcxOTk5MmQ4ZDQuLmU2YTg3
OWMwYTc0MDJkZjYzZTUyMmRiYTAyNWY1Y2VjMDM1ZGEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTkwLDYgKzkwLDkgQEAgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdl
YlBhZ2UsIGMKIAogICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRDb2xv
clNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CisKKyAgICBpZiAoIXBhcmFtZXRlcnMuaXNQ
cm9jZXNzU3dhcCkKKyAgICAgICAgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJ
Zk5lZWRlZCgpOwogfQogCiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhKCkKQEAgLTk3LDE0ICsxMDAsMTQgQEAgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6On5UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSgpCiAgICAg
aW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogfQogCi12b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZUlmTmVlZGVkKCkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
bmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Jvb3RMYXllcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUpCisgICAgaWYgKCFtX25lZWRzU2VuZERpZEZpcnN0TGF5ZXJGbHVzaCkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fbmVlZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSA9IGZhbHNlOworICAgIG1fbmVlZHNTZW5kRGlkRmlyc3RMYXllckZsdXNoID0gZmFs
c2U7CiAKICAgICAvLyBMZXQgdGhlIGZpcnN0IGNvbW1pdCBjb21wbGV0ZSBiZWZvcmUgc2VuZGlu
Zy4KICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSB7CkBAIC0xMTIsMTAgKzExNSwyMSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpzZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVl
ZGVkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBMYXllclRyZWVDb250ZXh0IGxheWVy
VHJlZUNvbnRleHQ7CiAgICAgICAgIGxheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXll
ckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6RHJh
d2luZ0FyZWFQcm94eTo6RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRy
ZWVDb250ZXh0KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OkRp
ZEZpcnN0TGF5ZXJGbHVzaCgwLCBsYXllclRyZWVDb250ZXh0KSk7CiAgICAgfSk7CiB9CiAKK3Zv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlSWZOZWVkZWQoKQoreworICAgIGlmICghbV9uZWVkc1NlbmRFbnRlckFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQorICAgICAgICByZXR1cm47CisgICAgbV9uZWVkc1NlbmRF
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7CisKKyAgICBMYXllclRyZWVD
b250ZXh0IGxheWVyVHJlZUNvbnRleHQ7CisgICAgbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQg
PSBtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOworICAgIHNlbmQoTWVzc2FnZXM6
OkRyYXdpbmdBcmVhUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5
ZXJUcmVlQ29udGV4dCkpOworfQorCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpzZXROZWVkc0Rpc3BsYXkoKQogewogfQpAQCAtNDgzLDcgKzQ5Nyw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZyhVcGRhdGVSZW5kZXJpbmdU
eXBlIGZsdXNoVHlwCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGlkRmx1c2hBbGxGcmFtZXMp
IHsKLSAgICAgICAgICAgIHNlbmRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVk
ZWQoKTsKKyAgICAgICAgICAgIHNlbmREaWRGaXJzdExheWVyRmx1c2hJZk5lZWRlZCgpOwogICAg
ICAgICAgICAgaW52YWxpZGF0ZVJlbmRlcmluZ1VwZGF0ZVJ1bkxvb3BPYnNlcnZlcigpOwogICAg
ICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>396111</attachid>
            <date>2020-04-10 11:48:19 -0700</date>
            <delta_ts>2020-04-10 11:48:19 -0700</delta_ts>
            <desc>test case for drawInContext: on hidden layer</desc>
            <filename>AppDelegate.m</filename>
            <type>text/x-csrc</type>
            <size>2923</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">Ly8KLy8gIEFwcERlbGVnYXRlLm0KLy8gIEhpZGRlbkxheWVyVGVzdAovLwovLyAgQ3JlYXRlZCBi
eSBCZW4gTmhhbSBvbiA0LzEwLzIwLgovLyAgQ29weXJpZ2h0IMKpIDIwMjAgQmVuIE5oYW0uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi8vCgojaW1wb3J0ICJBcHBEZWxlZ2F0ZS5oIgoKI2ltcG9ydCA8
Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgojaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KCiNkZWZpbmUga0NHQ29udGV4dFR5cGVCaXRtYXAgKCh1aW50MzJfdCk0KQoKZXh0ZXJu
IHVpbnQzMl90IENHQ29udGV4dEdldFR5cGUoQ0dDb250ZXh0UmVmIGN0eCk7CgpAaW50ZXJmYWNl
IERyYXduTGF5ZXIgOiBDQUxheWVyIHsKICAgIGludCBfZHJhd0NvdW50Owp9CkBlbmQKCkBpbXBs
ZW1lbnRhdGlvbiBEcmF3bkxheWVyCgotICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJl
ZiljdHggewogICAgLy8gQ0EgdXNlcyBrQ0dDb250ZXh0VHlwZVVua25vd24gZm9yIElPU3VyZmFj
ZS1iYWNrZWQgY29udGV4dHMgKHNlZSBDQUdldENhY2hlZENHSU9TdXJmYWNlQ29udGV4dCksIHdo
aWNoIGlzIGNvbmZ1c2luZy4KICAgIC8vIFNvIHRvIGtub3cgaWYgd2UncmUgZHJhd2luZyBvbiB0
aGUgQ1BVIG9yIEdQVSwganVzdCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHJlZ3VsYXIgb2xkIGJp
dG1hcCBjb250ZXh0LgogICAgYm9vbCB1c2VzQ1BVRHJhd2luZyA9IENHQ29udGV4dEdldFR5cGUo
Y3R4KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcDsKICAgIE5TTG9nKEAiZHJhd2luZyBsYXllciAl
cCBpbiBjdHggJXA7IHdhbnRzIEdQVSBkcmF3aW5nOiAlZDsgZ290IEdQVSBkcmF3aW5nOiAlZCIs
IHNlbGYsIGN0eCwgc2VsZi5kcmF3c0FzeW5jaHJvbm91c2x5LCAhdXNlc0NQVURyYXdpbmcpOwoK
ICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBo
aWNzQ29udGV4dFdpdGhDR0NvbnRleHQ6Y3R4IGZsaXBwZWQ6Tk9dOwogICAgW05TR3JhcGhpY3ND
b250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJy
ZW50Q29udGV4dDpjb250ZXh0XTsKCiAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzdHIg
PSBbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRHJhdyBDb3VudDogJWQiLCBfZHJhd0NvdW50KytdXTsK
ICAgIFtzdHIgYWRkQXR0cmlidXRlOk5TRm9udEF0dHJpYnV0ZU5hbWUgdmFsdWU6W05TRm9udCBz
eXN0ZW1Gb250T2ZTaXplOjI0IHdlaWdodDpOU0ZvbnRXZWlnaHRCb2xkXSByYW5nZTpOU01ha2VS
YW5nZSgwLCBzdHIubGVuZ3RoKV07CiAgICBbc3RyIGRyYXdBdFBvaW50OkNHUG9pbnRNYWtlKDAs
IHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0IC8gMildOwogICAgCiAgICBbTlNHcmFwaGljc0NvbnRl
eHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwp9CgpAZW5kCgpAaW50ZXJmYWNlIEFwcERlbGVnYXRl
ICgpIHsKICAgIENBTGF5ZXIgKl9yb290TGF5ZXI7CiAgICBEcmF3bkxheWVyICpfZHJhd25MYXll
cjsKfQpAcHJvcGVydHkgKHdlYWspIElCT3V0bGV0IE5TV2luZG93ICp3aW5kb3c7CkBlbmQKCkBp
bXBsZW1lbnRhdGlvbiBBcHBEZWxlZ2F0ZQoKLSAodm9pZClhcHBsaWNhdGlvbkRpZEZpbmlzaExh
dW5jaGluZzooTlNOb3RpZmljYXRpb24gKilhTm90aWZpY2F0aW9uIHsKICAgIE5TVmlldyAqcm9v
dFZpZXcgPSBzZWxmLndpbmRvdy5jb250ZW50VmlldzsKICAgIF9yb290TGF5ZXIgPSBbW0NBTGF5
ZXIgYWxsb2NdIGluaXRdOwogICAgX3Jvb3RMYXllci5mcmFtZSA9IHJvb3RWaWV3LmJvdW5kczsK
ICAgIHJvb3RWaWV3LmxheWVyID0gX3Jvb3RMYXllcjsKICAgIHJvb3RWaWV3LndhbnRzTGF5ZXIg
PSBZRVM7CiAgICAKICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElN
RV9OT1csIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAg
ICAgc2VsZi0+X2RyYXduTGF5ZXIgPSBbW0RyYXduTGF5ZXIgYWxsb2NdIGluaXRdOwogICAgICAg
IHNlbGYtPl9kcmF3bkxheWVyLmhpZGRlbiA9IFlFUzsKICAgICAgICBzZWxmLT5fZHJhd25MYXll
ci5mcmFtZSA9IHNlbGYtPl9yb290TGF5ZXIuYm91bmRzOwogICAgICAgIHNlbGYtPl9kcmF3bkxh
eWVyLmNvbnRlbnRzU2NhbGUgPSBzZWxmLndpbmRvdy5iYWNraW5nU2NhbGVGYWN0b3I7CiAgICAg
ICAgc2VsZi0+X2RyYXduTGF5ZXIuZHJhd3NBc3luY2hyb25vdXNseSA9IFlFUzsKICAgICAgICAK
ICAgICAgICBOU0xvZyhAImFkZGluZyBoaWRkZW4gc3VibGF5ZXIgJXAiLCBzZWxmLT5fZHJhd25M
YXllcik7CiAgICAgICAgW3NlbGYtPl9yb290TGF5ZXIgYWRkU3VibGF5ZXI6c2VsZi0+X2RyYXdu
TGF5ZXJdOwogICAgfSk7CiAgICAKICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElT
UEFUQ0hfVElNRV9OT1csIDIgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeewogICAgICAgIE5TTG9nKEAibWFya2luZyBoaWRkZW4gc3VibGF5ZXIgJXAgZm9yIGRp
c3BsYXkiLCBzZWxmLT5fZHJhd25MYXllcik7CiAgICAgICAgW3NlbGYtPl9kcmF3bkxheWVyIHNl
dE5lZWRzRGlzcGxheV07CiAgICB9KTsKICAgIAogICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hf
dGltZShESVNQQVRDSF9USU1FX05PVywgMyAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CiAgICAgICAgTlNMb2coQCJ1bmhpZGluZyBzdWJsYXllciAlcCIsIHNl
bGYtPl9kcmF3bkxheWVyKTsKICAgICAgICBzZWxmLT5fZHJhd25MYXllci5oaWRkZW4gPSBOTzsK
ICAgIH0pOwp9CgpAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396112</attachid>
            <date>2020-04-10 12:14:04 -0700</date>
            <delta_ts>2020-04-10 13:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210297-20200410121403.patch</filename>
            <type>text/plain</type>
            <size>29848</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5YjQwNzY2OGJiNWFhM2U5
ZWQ3ZDYzNWRjMWUyZWY0MjhkYzQ0OGMuLjA2NGMyYWE1YjJlNDQzNjEyMDFlMTE3YzA5MTVlOWJl
YWJlYmExMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDQtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGaXJzdCByZW5kZXIgYWZ0ZXIgYSBw
cm9jZXNzIHN3YXAgZG9lcyBub3QgdXNlIGFjY2VsZXJhdGVkIHJlbmRlcmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMjk3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MTQzMjUxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KKworICAgICAgICBUbyBwcmV2ZW50IGZsYXNoaW5nIG9uIG5hdmlnYXRpb24gd2hlbiBw
cm9jZXNzLXN3YXBwaW5nLCB3ZSB3ZXJlIGRlbGF5aW5nIHRoZQorICAgICAgICBEcmF3aW5nQXJl
YVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIElQQyBtZXNzYWdlIGZyb20g
dGhlIFdlYlByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFVJUHJvY2VzcywgdW50aWwgdGhlIG5ldyBw
YWdlIGlzIHJlYWR5IHRvIGRpc3BsYXkuIFRoZSByZWFzb24gd2UgZGlkIHRoaXMKKyAgICAgICAg
aXMgdGhhdCB0aGUgRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBJUEMgbWVzc2FnZSBl
bmRzIHVwIHNldHRpbmcgdGhlIHJvb3QKKyAgICAgICAgQ0FMYXllciBzbyB0aGUgbmV3IGNvbnRl
bnQgd291bGQgYmVjb21lIHZpc2libGUgb24gc2NyZWVuLiBIb3dldmVyLCBhbm90aGVyIHNpZGUK
KyAgICAgICAgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB3ZSB3b3VsZCBhbHNvIGRlbGF5IHRoZSBw
b2ludCB1bnRpbCB3aGljaCB3ZSBnZXQKKyAgICAgICAgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nLCB3
aGljaCB3b3VsZCBuZWdhdGl2ZWx5IGltcGFjdCBlYXJseSBwYWdlIGxvYWQgcGVyZm9ybWFuY2Uu
CisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3
ZXJlIG1hZGU6CisgICAgICAgIDEuIFdlIG5vIGxvbmdlciBkZWxheSB0aGUgRHJhd2luZ0FyZWFQ
cm94eTo6RW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBJUEMuCisgICAgICAgICAgIElu
IG5vbiBwcm9jZXNzLXN3YXAgY2FzZXMsIHdlIHNlbmQgaXQgYXMgc29vbiBhcyB0aGUgRHJhd2lu
Z0FyZWEgaXMgY29uc3RydWN0ZWQuCisgICAgICAgICAgIEluIHByb2Nlc3Mtc3dhcCBjYXNlcywg
d2Ugc2VuZCBpdCBhcyBzb29uIGFzIHdlIGNvbW1pdCB0aGUgbG9hZCBzaW5jZSB0aGlzIGlzCisg
ICAgICAgICAgIHdoZW4gdGhlIHByb3Zpc2lvbmFsIGRyYXdpbmcgYXJlYSBnZXRzIGNvbW1pdHRl
ZCBhbmQgaGFwcGVucyBiZWZvcmUgd2UgaGF2ZQorICAgICAgICAgICBhbnkgY29udGVudCB0byBw
YWludC4KKyAgICAgICAgMi4gSW4gdGhlIFVJUHJvY2Vzcywgd2hlbiB3ZSBnZXQgdGhlIERyYXdp
bmdBcmVhUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUKKyAgICAgICAgICAg
SVBDIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSByb290IGxheWVyLCB3ZSBhZGQgdGhlIG5ldyBvbmUg
YmVoaW5kIHRoZSBleGlzdGluZyBvbmUKKyAgICAgICAgICAgaW5zdGVhZCBvZiByZXBsYWNpbmcg
dGhlIGV4aXN0aW5nIG9uZS4gQXMgYSByZXN1bHQsIHRoZSBuZXcgbGF5ZXIgd2lsbCBnZXQKKyAg
ICAgICAgICAgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnV0IHdpbGwgbm90IGJlIHZpc2libGUg
b24gc2NyZWVuIHlldC4KKyAgICAgICAgMy4gSW50cm9kdWNlIGEgbmV3IERyYXdpbmdBcmVhUHJv
eHk6OkRpZEZpcnN0TGF5ZXJGbHVzaCBJUEMgd2hpY2ggZ2V0cyBzZW5kIGF0IHRoZQorICAgICAg
ICAgICBwb2ludCB3aGVyZSB3ZSB1c2VkIHRvIHNlbmQgdGhlIEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUgSVBDLCBtZWFuaW5nIHdoZXJlCisgICAgICAgICAgIHRoZSBuZXcgY29udGVu
dCBpcyByZWFkeSB0byBkaXNwbGF5LiBXaGVuIHRoZSBVSVByb2Nlc3MgcmVjZWl2ZXMgdGhpcyBJ
UEMsIGl0CisgICAgICAgICAgIGFjdHVhbGx5IHJlcGxhY2VzIHRoZSByb290IGxheWVyIHdpdGgg
dGhlIG5ldyBsYXllciBzbyB0aGF0IHRoZSBuZXcgY29udGVudCB2aXNpYmxlLgorCisgICAgICAg
IEFmdGVyIHRoaXMgcGF0Y2gsIG91ciBDQUxheWVycyBnZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRp
bmcgcmlnaHQgYXdheSBhZnRlciBhCisgICAgICAgIHByb2Nlc3Mtc3dhcCBidXQgd2Ugc3RpbGwg
ZG8gbm90IHNlZSBhbnkgYmxhbmstZmxhc2hpbmcgb24gbmF2aWdhdGlvbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2gpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHk6OmRpZEZpcnN0TGF5ZXJGbHVzaCk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6ZGlkRmlyc3RMYXllckZsdXNoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VEaWRGaXJzdExheWVyRmx1c2gpOgorICAg
ICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlV2l0aG91dEZsYXNoaW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaXJzdExheWVyRmx1c2gpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlk
Rmlyc3RMYXllckZsdXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZW5kRGlkRmlyc3RMYXllckZsdXNo
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcp
OgorCiAyMDIwLTA0LTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBkZWNvZGUgbWV0aG9kcyBpbiBXZWJDb3Jl
QXJndW1lbnRDb2RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oCmluZGV4IGNiN2ZiZjkzZTMwMGMxMjZmODBkYTQ3NGU5NmEyZTJjOWJiNGRiNzguLjM4Njc5
NDY5N2NjZWI0NGZkOTg0YmNjYjU5OTkzYTkzZGVkNTgzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNDMyLDYgKzQzMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYgb2xkVG9vbFRpcCwgY29uc3Qg
U3RyaW5nJiBuZXdUb29sVGlwKTsKIAogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcihDQUxheWVyICopOworICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllckFmdGVyRmx1c2goQ0FMYXllciAqKTsKICAgICBDQUxheWVyICphY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0VGh1bWJuYWlsVmlldyhfV0tUaHVtYm5haWxWaWV3ICopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA0NmFmNzNi
NDM3OWZjNzc2MWYwNGQzMjRiYzZiYmFkN2RmZjE0ODhiLi40Mzk4NDQ4NGIzZWNlYTM4M2JlOGRj
Yzg0ZDFiZTQ3YTcyYWJkY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtMzgxMiw3ICszODEyLDI1IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoQ0FMYXllciAqcm9vdExheWVyKQogewog
ICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKIAorICAgIC8vIFRoaXMgaXMg
dGhlIHByb2Nlc3Mtc3dhcCBjYXNlLiBXZSBhZGQgdGhlIG5ldyBsYXllciBiZWhpbmQgdGhlIGV4
aXN0aW5nIHJvb3QgbGF5ZXIgYW5kIG1hcmsgaXQgYXMgaGlkZGVuLgorICAgIC8vIFRoaXMgd2F5
LCB0aGUgbmV3IGxheWVyIGdldHMgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnV0IHdvbid0IGJl
IHZpc2libGUgdW50aWwKKyAgICAvLyBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVy
QWZ0ZXJGbHVzaCgpIGlzIGNhbGxlZCwgaW4gb3JkZXIgdG8gcHJldmVudCBmbGFzaGluZy4KKyAg
ICBpZiAobV9yb290TGF5ZXIgJiYgcm9vdExheWVyKSB7CisgICAgICAgIGlmIChtX3RodW1ibmFp
bFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVn
aW5dOworICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworCisg
ICAgICAgIHJvb3RMYXllci5oaWRkZW4gPSBZRVM7CisgICAgICAgIFtbbV9sYXllckhvc3RpbmdW
aWV3IGxheWVyXSBpbnNlcnRTdWJsYXllcjpyb290TGF5ZXIgYXRJbmRleDowXTsKKworICAgICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
bV9yb290TGF5ZXIgPSByb290TGF5ZXI7CisgICAgcm9vdExheWVyLmhpZGRlbiA9IE5POwogCiAg
ICAgaWYgKG1fdGh1bWJuYWlsVmlldykgewogICAgICAgICB1cGRhdGVUaHVtYm5haWxWaWV3TGF5
ZXIoKTsKQEAgLTM4MjcsNiArMzg0NSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKENBTGF5ZXIgKnJvb3RMYXllcikKICAgICBbQ0FUcmFu
c2FjdGlvbiBjb21taXRdOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nUm9vdExheWVyQWZ0ZXJGbHVzaChDQUxheWVyICpyb290TGF5ZXIpCit7CisgICAg
bV9yb290TGF5ZXIgPSBudWxscHRyOyAvLyBNYWtlIHN1cmUgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgbGF5ZXIuCisgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihyb290TGF5
ZXIpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRUaHVtYm5haWxWaWV3KF9XS1RodW1ibmFp
bFZpZXcgKnRodW1ibmFpbFZpZXcpCiB7CiAgICAgQVNTRVJUKCFtX3RodW1ibmFpbFZpZXcgfHwg
IXRodW1ibmFpbFZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCmluZGV4IGQ1MTE5MjY2NDkwYWM5YzNmMGU5ZGNiMDliNmIxMDVmNDU5N2E3MGYuLjViMGI4
ZGVlOTgxMjliZGIyYzVkN2JiZGNiMjg3NTE1OTdiYmE3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwcml2YXRlOgog
ICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZpcnR1YWwg
dm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IC8qIGJhY2tpbmdT
dG9yZVN0YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgLyogYmFja2lu
Z1N0b3JlU3RhdGVJRCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRGaXJzdExheWVyRmx1c2godWludDY0X3QgLyogYmFja2luZ1N0b3JlU3RhdGVJ
RCAqLywgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVHZW9tZXRyeSgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgppbmRleCBi
OGI1MTdlZmQ4ZGYxZDJhMDc4NjcxNDk1Y2Q2NDZkNTQ4NGRiZDczLi5iY2E2MDU2ZWE2ZDZlMTQz
OWQ1YzQwZWIyYjUxNTI2YTJlYTE1ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDYgKzIzLDcgQEAKIG1l
c3NhZ2VzIC0+IERyYXdpbmdBcmVhUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgRW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBXZWJL
aXQ6OkxheWVyVHJlZUNvbnRleHQgY29udGV4dCkKICAgICBVcGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBXZWJLaXQ6OkxheWVyVHJl
ZUNvbnRleHQgY29udGV4dCkKKyAgICBEaWRGaXJzdExheWVyRmx1c2godWludDY0X3QgYmFja2lu
Z1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCiAgICAgRGlz
cGF0Y2hQcmVzZW50YXRpb25DYWxsYmFja3NBZnRlckZsdXNoaW5nTGF5ZXJzKFZlY3RvcjxXZWJL
aXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGEwYjcwM2MyZGZkYTUzZGNmN2RiMzk5
ZmY0MWExZTZmNzJjZDM0M2EuLjhhOWQ5YzZiY2UwMzc3YjhiN2NjN2JlMGQ2MGQ0N2Q4NzNjNmZk
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM1MCw2ICszNTAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdExheWVyRmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVj
dGlvbikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCmluZGV4IGZjNDdkMjM0NTA4YzQ1N2RjMTkwZWQ3YzkzNDY0NjM1ZGQ0Zjk3ZTMuLjVk
NjdkZWYyYWJkOTM3NDE5MTU0YzkyMjhiYmQ3NDlmNjk5ZjA5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtOTQsMTIgKzk0LDEyIEBA
IHN0YXRpYyBjb25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYgbWVzc2FnZU5hbWVz
VG9JZ25vcmVXaGlsZVN1c3BlbmRlZCgpCiB9CiAjZW5kaWYKIAotU3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIEZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgU2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKK1N1c3BlbmRl
ZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoIHNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRmlyc3RMYXllckZsdXNoKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX3dlYlBhZ2VJ
RChwYWdlLndlYlBhZ2VJRCgpKQogICAgICwgbV9wcm9jZXNzKFdURk1vdmUocHJvY2VzcykpCiAg
ICAgLCBtX21haW5GcmFtZUlEKG1haW5GcmFtZUlEKQotICAgICwgbV9zaG91bGREZWxheUNsb3Np
bmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQorICAgICwgbV9zaG91
bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaChzaG91bGREZWxheUNsb3NpbmdVbnRp
bEZpcnN0TGF5ZXJGbHVzaCkKICAgICAsIG1fc3VzcGVuc2lvblRpbWVvdXRUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCkK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9zdXNwZW5zaW9uQWN0aXZpdHkobV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlBhZ2Ugc3VzcGVuc2lvbiBm
b3IgYmFjay9mb3J3YXJkIGNhY2hlIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKSkKQEAgLTE4Myw5ICsx
ODMsOSBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogfQogCi12b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6cGFn
ZUVudGVyZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCit2b2lkIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6cGFnZURpZEZpcnN0TGF5ZXJGbHVzaCgpCiB7Ci0gICAgbV9zaG91bGREZWxheUNsb3Np
bmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBTaG91bGREZWxheUNs
b3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vOworICAgIG1f
c2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggPSBTaG91bGREZWxheUNsb3Np
bmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6Tm87CiAKICAgICBpZiAobV9zaG91bGRDbG9zZVdoZW5F
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKSB7CiAgICAgICAgIC8vIFdlIG5lZWRl
ZCB0aGUgc3VzcGVuZGVkIHBhZ2UgdG8gc3RheSBhbGl2ZSB0byBhdm9pZCBmbGFzaGluZy4gTm93
IHdlIGNhbiBnZXQgcmlkIG9mIGl0LgpAQCAtMjAwLDggKzIwMCw4IEBAIGJvb2wgU3VzcGVuZGVk
UGFnZVByb3h5OjpwYWdlSXNDbG9zZWRPckNsb3NpbmcoKSBjb25zdAogCiB2b2lkIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6Y2xvc2VXaXRob3V0Rmxhc2hpbmcoKQogewotICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgIiVwIC0gU3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZVdpdGhvdXRGbGFz
aGluZygpIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZT8gJWQiLCB0aGlzLCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Olllcyk7Ci0gICAgaWYgKG1fc2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID09IFNob3VsZERl
bGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6WWVzKSB7
CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJv
eHk6OmNsb3NlV2l0aG91dEZsYXNoaW5nKCkgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExh
eWVyRmx1c2g/ICVkIiwgdGhpcywgbV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJG
bHVzaCA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzKTsKKyAg
ICBpZiAobV9zaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBTaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaDo6WWVzKSB7CiAgICAgICAgIG1fc2hvdWxk
Q2xvc2VXaGVuRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9IHRydWU7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5oCmluZGV4IGVmN2FhMmQyOWE0NjE1NzAzY2E2ZmFmNjE3NWI5M2JiMzIwY2IyOTIu
LjUyMmJlNDE1Y2E1NGMwN2RkMTVhYzIwYTcxNmU0NDM5YTZhYzI2NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBAIC01MCwxMiArNTAsMTIgQEAg
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVp
bnQzMl90OwogI2VuZGlmCiAKLWVudW0gY2xhc3MgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRl
cmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0g
Y2xhc3MgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2ggOiBib29sIHsgTm8s
IFllcyB9OwogCiBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgZmluYWw6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIFN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7
CisgICAgU3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCwgU2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpOwogICAgIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsK
IAogICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBmaW5kUmV1c2FibGVTdXNwZW5k
ZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3YWl0VW50aWxSZWFkeVRvVW5zdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3VzcGVuZGVkUGFnZVByb3h5Kik+JiYpOwogICAgIHZvaWQgdW5zdXNwZW5kKCk7CiAKLSAgICB2
b2lkIHBhZ2VFbnRlcmVkQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKKyAgICB2b2lkIHBh
Z2VEaWRGaXJzdExheWVyRmx1c2goKTsKICAgICB2b2lkIGNsb3NlV2l0aG91dEZsYXNoaW5nKCk7
CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKQEAgLTEwNCw3ICsxMDQs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbV9tYWluRnJhbWVJRDsKICAgICBib29sIG1faXNDbG9z
ZWQgeyBmYWxzZSB9OwotICAgIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSB7IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6Tm8gfTsKKyAgICBTaG91bGREZWxheUNsb3NpbmdV
bnRpbEZpcnN0TGF5ZXJGbHVzaCBtX3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZs
dXNoIHsgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2g6Ok5vIH07CiAgICAg
Ym9vbCBtX3Nob3VsZENsb3NlV2hlbkVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUg
eyBmYWxzZSB9OwogCiAgICAgU3VzcGVuc2lvblN0YXRlIG1fc3VzcGVuc2lvblN0YXRlIHsgU3Vz
cGVuc2lvblN0YXRlOjpTdXNwZW5kaW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBiMTY2M2U5Y2JhMDI5MDljMjc5OTE5MGVjZGZlMDdjY2YwOTRmNmEy
Li5kOTRjNzgyMjVjNTJkNjkwMmM5ZDU5MDZhMzM1MDBjNTVkMTgzNDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4sIFBybwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3N0SW5q
ZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2UubWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3Mo
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2UubWVzc2FnZUJvZHkuZ2V0KCkpLmdl
dCgpKSkpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3Nz
aWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSkKK2Jvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBh
Z2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5
ZXJGbHVzaCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkKIHsKICAgICBt
X3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogICAgIG1fbGFz
dFN1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwpAQCAtODQzLDcgKzg0Myw3IEBAIGJvb2wgV2ViUGFn
ZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBib29sIG5l
ZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZsYXNoaW5nID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50
aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID09IFNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6WWVzOworICAgIGJvb2wg
bmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcgPSBzaG91bGREZWxheUNsb3NpbmdV
bnRpbEZpcnN0TGF5ZXJGbHVzaCA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJG
bHVzaDo6WWVzOwogICAgIGlmICghbmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcg
JiYgKCFmcm9tSXRlbSB8fCAhc2hvdWxkVXNlQmFja0ZvcndhcmRDYWNoZSgpKSkgewogICAgICAg
ICBpZiAoIWZyb21JdGVtKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGlu
ZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIHRoZXJlIGlzIG5vIGFzc29jaWF0ZWQg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CkBAIC04NTMsNyArODUzLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFn
ZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICB9CiAKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAl
aSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBzdXNwZW5kZWRQ
YWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29w
eVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gbWFrZVVu
aXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFp
bkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoKTsKIAogICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBz
dXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVz
IiBQUkl1NjQsIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5n
U3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9t
SXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIApAQCAtMzI3NywxMiArMzI3NywxMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy5wdHIoKSAh
PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKSk7CiAKLSAgICBhdXRvIHNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA9IFNob3VsZERl
bGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZTo6Tm87Cisg
ICAgYXV0byBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCA9IFNob3VsZERl
bGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNoOjpObzsKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgLy8gT24gbWFjT1MsIHdoZW4gbm90IHVzaW5nIFVJLXNpZGUgY29tcG9zaXRpbmcsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHdlIGRvIG5vdCBjbG9zZSB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMg
cHJvY2VzcyB1bnRpbCB3ZSd2ZQogICAgIC8vIGVudGVyZWQgYWNjZWxlcmF0ZWQgY29tcG9zaXRp
bmcgZm9yIHRoZSBuZXcgcGFnZSBvciB3ZSB3aWxsIGZsYXNoIG9uIG5hdmlnYXRpb24uCiAgICAg
aWYgKGRyYXdpbmdBcmVhKCktPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmlt
YXRpb24pCi0gICAgICAgIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSA9IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZTo6WWVzOworICAgICAgICBzaG91bGREZWxheUNsb3NpbmdVbnRp
bEZpcnN0TGF5ZXJGbHVzaCA9IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RMYXllckZsdXNo
OjpZZXM7CiAjZW5kaWYKIAogICAgIGlmIChtX2lzTGF5ZXJUcmVlRnJvemVuRHVlVG9Td2lwZUFu
aW1hdGlvbikKQEAgLTMyOTIsNyArMzI5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQ
cm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKICAgICBhdXRvKiBuYXZp
Z2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+
bmF2aWdhdGlvbklEKCkpOwotICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmln
YXRpb24gPyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJh
bWVJREluUHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUpIDogZmFsc2U7CisgICAgYm9vbCBkaWRTdXNwZW5kUHJldmlvdXNQ
YWdlID0gbmF2aWdhdGlvbiA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoKm5hdmlnYXRp
b24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmlyc3RM
YXllckZsdXNoKSA6IGZhbHNlOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywg
bV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzcygp
LndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3Jl
OjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwogCiAgICAg
Ly8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGlu
IHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgpAQCAtNzgyMiw5ICs3ODIyLDE3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmIGxheWVyCiAgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9
PSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24pOwogI2VuZGlmCiAgICAgcGFnZUNs
aWVudCgpLmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheWVyRmx1c2goY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAg
QVNTRVJUKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVB
bmltYXRpb24pOworI2VuZGlmCisgICAgcGFnZUNsaWVudCgpLmRpZEZpcnN0TGF5ZXJGbHVzaChs
YXllclRyZWVDb250ZXh0KTsKIAogICAgIGlmIChtX2xhc3RTdXNwZW5kZWRQYWdlKQotICAgICAg
ICBtX2xhc3RTdXNwZW5kZWRQYWdlLT5wYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCk7CisgICAgICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UtPnBhZ2VEaWRGaXJzdExheWVyRmx1
c2goKTsKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk3MTM2ZDUw
MWI0MGFhNTgwOTc1OWM1N2U2Mjc1Y2RmNWY5Mjg2MzMuLjY0YWQyMDFhODYwZjQyMmY0ZTIxZDA1
YzRlMDViNTAzMmE4MTUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xMTc5LDYgKzExNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZp
cnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpOworICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKTsKIAogICAgIHZvaWQgYWRkRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSYpOwog
ICAgIHZvaWQgcmVtb3ZlRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSYpOwpAQCAtMTc0
MSw3ICsxNzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsK
ICAgICB2b2lkIHVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlcygpOwogCi0g
ICAgYm9vbCBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYm9vbCBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKEFQSTo6TmF2aWdhdGlvbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
bWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERlbGF5Q2xv
c2luZ1VudGlsRmlyc3RMYXllckZsdXNoKTsKIAogICAgIGVudW0gY2xhc3MgUmVzZXRTdGF0ZVJl
YXNvbiB7CiAgICAgICAgIFBhZ2VJbnZhbGlkYXRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZjBjYzM4YTQ4OTQ3NGZiOWU5NjRm
ZWZjOTFlODM3ZjYyNjZkMmMwNC4uZjk5OWRiYThhMzM1OTliMWVkMWM5MjMxMzcxOGEyMzg2Nzlk
NDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmgKQEAgLTE1Miw2ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50ZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKICAgICB2
b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpcnN0TGF5ZXJGbHVzaChjb25zdCBMYXllclRy
ZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmll
d1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxF
dmVudCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCmluZGV4IGQ3ZGFjMDI1Mjg1MmE3MjdlMzZkMTE1ZTAwNWRjNmQyZmVm
ZTg3YTIuLmRiY2Q2ODE5ZGRmZDY1ZDRkNGM4MDhmNmQ4YmQ1MmNkNDcyNjYzZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTUz
Myw2ICs1MzMsMTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXkKICAgICBtX2ltcGwtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIocmVuZGVyTGF5ZXIpOwogfQogCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRGaXJzdExheWVyRmx1c2goY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYg
bGF5ZXJUcmVlQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoIWxheWVyVHJlZUNvbnRleHQuaXNFbXB0
eSgpKTsKKworICAgIENBTGF5ZXIgKnJlbmRlckxheWVyID0gW0NBTGF5ZXIgX3dlYl9yZW5kZXJM
YXllcldpdGhDb250ZXh0SUQ6bGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SURdOworICAgIG1faW1w
bC0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllckFmdGVyRmx1c2gocmVuZGVyTGF5
ZXIpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKQogewogICAgIG1faW1wbC0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cihuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggODNjNzBjZmMxMTNm
YTM3ZjRlM2VkYWYzODBjNjMwNmQ5ZDY0YmRlYy4uZTIyODJlYjNmOWZhZjRmNjAxZTJjMGM2NDFj
YTc2ZmFmOGY4Y2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC00Niw2
ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
dWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8qIGJhY2tpbmdT
dG9yZVN0YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDcxZTQ1YTI2MWIwNGQ1MDI5OWVlZTM0MDA2Zjk3
ZGM3OWI5MDJiMjguLjVmYTY3Yzc4ZWE2YzZiYzU4ODQ3MzY5NjgzMWZiMTJhY2E1OGM4NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMTMsNiArMTEzLDExIEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUodWludDY0CiAgICAgbV93ZWJQYWdlUHJveHkudXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CiB9CiAKK3ZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkRmlyc3RMYXllckZsdXNoKHVpbnQ2NF90IC8q
IGJhY2tpbmdTdG9yZVN0YXRlSUQgKi8sIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJl
ZUNvbnRleHQpCit7CisgICAgbV93ZWJQYWdlUHJveHkuZGlkRmlyc3RMYXllckZsdXNoKGxheWVy
VHJlZUNvbnRleHQpOworfQorCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHk6OmRpZFVwZGF0ZUdlb21ldHJ5KCkKIHsKICAgICBBU1NFUlQobV9pc1dhaXRpbmdGb3JEaWRV
cGRhdGVHZW9tZXRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAppbmRleCA4ODNlZjFmNWYyYTFmZmVlZDVlYjUyMDQ4N2U1ZjBjNjA3ZTgxZTQ2
Li43ODU0MTNiZjc2NGUyMWZjZDBiYmEyZjg4NjUyODFjYzA3MDI5YmIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTc5LDYgKzc5LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bERlbHRhKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVJZk5lZWRlZCgpIHsgfQorCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBmNjdmMjc5MmI1ZWRjNzE3NzE4YzhjMTZhZjQ3NTg0NDdiYjkyZTkwLi5hMjUzMDg1M2IwYWEw
ZDFjNWY2MGVjZjhmYzU0ZWQwY2RkZGVmZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTg1Nyw2ICs1ODU3LDkgQEAgdm9pZCBXZWJQYWdl
OjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICBpZiAoIWZyYW1lLT5pc01haW5G
cmFtZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9kcmF3aW5nQXJlYSkKKyAgICAg
ICAgbV9kcmF3aW5nQXJlYS0+c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5l
ZWRlZCgpOworCiAgICAgQVNTRVJUKCFmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnN0YXRl
TWFjaGluZSgpLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSk7CiAgICAgdW5mcmVlemVM
YXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uOjpQcm9jZXNzU3dhcCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggOTI4ZWMyYTM1YTUzZmMyYWEwM2Q2
Y2FlNzU1M2UxOThlMmExMTYzNy4uODhhNGY5NWIwYTljNjY5MDBhYTU0ZGNmNmFhNDBiZDg4NmJm
ODRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTEwNiw3
ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENh
bGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudChib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVJZk5lZWRlZCgpOworICAgIHZvaWQgc2VuZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVJZk5lZWRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2VuZERpZEZpcnN0TGF5
ZXJGbHVzaElmTmVlZGVkKCk7CiAKICAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pIG92ZXJyaWRlOwpAQCAtMTY5LDYgKzE3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1NjYWxp
bmdWaWV3VG9GaXREb2N1bWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzU2VuZEVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyB0cnVlIH07CisgICAgYm9vbCBtX25lZWRzU2Vu
ZERpZEZpcnN0TGF5ZXJGbHVzaCB7IHRydWUgfTsKIH07CiAKIGlubGluZSBib29sIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGRNaWxlc3RvbmVzVG9EaXNwYXRjaChPcHRpb25TZXQ8
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBwYWludE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggMDI4YTg4YzE2NzQ5MDc5MGY0YWFmNjRl
NjVhYzdhMDUwNmI2M2U4My4uYmQ0MzZlODU3OTkwYmM2MGM4MGJjYjZiMDZkZTJhZGZmYzk0OWEy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtOTAsNiAr
OTAsOSBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5n
Q29udGV4dCgpOwogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKKwor
ICAgIGlmICghcGFyYW1ldGVycy5pc1Byb2Nlc3NTd2FwKQorICAgICAgICBzZW5kRW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZUlmTmVlZGVkKCk7CiB9CiAKIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQpAQCAtOTcsMTQg
KzEwMCwxNCBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6flRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhKCkKICAgICBpbnZhbGlkYXRlUmVuZGVyaW5nVXBkYXRlUnVuTG9vcE9i
c2VydmVyKCk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRF
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoKQordm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6c2VuZERpZEZpcnN0TGF5ZXJGbHVzaElmTmVlZGVkKCkKIHsK
ICAgICBpZiAoIW1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fbmVl
ZHNTZW5kRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKKyAgICBpZiAoIW1fbmVlZHNT
ZW5kRGlkRmlyc3RMYXllckZsdXNoKQogICAgICAgICByZXR1cm47Ci0gICAgbV9uZWVkc1NlbmRF
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7CisgICAgbV9uZWVkc1NlbmRE
aWRGaXJzdExheWVyRmx1c2ggPSBmYWxzZTsKIAogICAgIC8vIExldCB0aGUgZmlyc3QgY29tbWl0
IGNvbXBsZXRlIGJlZm9yZSBzZW5kaW5nLgogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKQEAgLTExMiwxMCArMTE1LDIx
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNlbmRFbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlSWZOZWVkZWQoCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKICAgICAgICAgbGF5ZXJUcmVlQ29u
dGV4dC5jb250ZXh0SUQgPSBtX2xheWVySG9zdGluZ0NvbnRleHQtPmNvbnRleHRJRCgpOwotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6RHJhd2luZ0FyZWFQcm94eTo6RGlkRmlyc3RMYXllckZsdXNoKDAsIGxheWVyVHJlZUNvbnRl
eHQpKTsKICAgICB9KTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpCit7CisgICAgaWYg
KCFtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX25lZWRzU2VuZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPSBm
YWxzZTsKKworICAgIExheWVyVHJlZUNvbnRleHQgbGF5ZXJUcmVlQ29udGV4dDsKKyAgICBsYXll
clRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElE
KCk7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6RW50ZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7Cit9CisKIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSgpCiB7CiB9CkBAIC00ODMs
NyArNDk3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUmVu
ZGVyaW5nKFVwZGF0ZVJlbmRlcmluZ1R5cGUgZmx1c2hUeXAKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChkaWRGbHVzaEFsbEZyYW1lcykgewotICAgICAgICAgICAgc2VuZEVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGVJZk5lZWRlZCgpOworICAgICAgICAgICAgc2VuZERpZEZpcnN0TGF5
ZXJGbHVzaElmTmVlZGVkKCk7CiAgICAgICAgICAgICBpbnZhbGlkYXRlUmVuZGVyaW5nVXBkYXRl
UnVuTG9vcE9ic2VydmVyKCk7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>