<?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>170299</bug_id>
          
          <creation_ts>2017-03-30 13:40:13 -0700</creation_ts>
          <short_desc>We should pause silent WebAudio rendering in background tabs</short_desc>
          <delta_ts>2017-04-01 17:55:26 -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>Web Audio</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>barraclough</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1292902</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 13:40:13 -0700</bug_when>
    <thetext>We should pause silent WebAudio rendering in background tabs since it uses CPU and is not observable by the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292903</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 13:40:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/31289132&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292941</commentid>
    <comment_count>2</comment_count>
      <attachid>305902</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 14:29:33 -0700</bug_when>
    <thetext>Created attachment 305902
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292945</commentid>
    <comment_count>3</comment_count>
      <attachid>305904</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 14:33:26 -0700</bug_when>
    <thetext>Created attachment 305904
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292992</commentid>
    <comment_count>4</comment_count>
      <attachid>305915</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 15:47:59 -0700</bug_when>
    <thetext>Created attachment 305915
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292994</commentid>
    <comment_count>5</comment_count>
      <attachid>305917</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 15:48:37 -0700</bug_when>
    <thetext>Created attachment 305917
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293016</commentid>
    <comment_count>6</comment_count>
      <attachid>305923</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 16:25:44 -0700</bug_when>
    <thetext>Created attachment 305923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293059</commentid>
    <comment_count>7</comment_count>
      <attachid>305933</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-30 18:25:46 -0700</bug_when>
    <thetext>Created attachment 305933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293466</commentid>
    <comment_count>8</comment_count>
      <attachid>305933</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-01 08:23:21 -0700</bug_when>
    <thetext>Comment on attachment 305933
Patch

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

&gt; Source/WebCore/dom/VisibilityChangeClient.h:35
&gt; +class VisibilityChangeClient {
&gt; +public:
&gt; +    virtual ~VisibilityChangeClient() { }
&gt; +
&gt; +    virtual void visibilityStateChanged() = 0;
&gt; +};

Anders recently suggested I use a lambda rather than a new &quot;client&quot; class for an asynch callback. Maybe you should do the same thing here as long as you have to change all of the call sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293468</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-01 09:04:47 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #8)
&gt; Comment on attachment 305933 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305933&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/VisibilityChangeClient.h:35
&gt; &gt; +class VisibilityChangeClient {
&gt; &gt; +public:
&gt; &gt; +    virtual ~VisibilityChangeClient() { }
&gt; &gt; +
&gt; &gt; +    virtual void visibilityStateChanged() = 0;
&gt; &gt; +};
&gt; 
&gt; Anders recently suggested I use a lambda rather than a new &quot;client&quot; class
&gt; for an asynch callback. Maybe you should do the same thing here as long as
&gt; you have to change all of the call sites?

Doesn&apos;t this make unregistering from the document a bit more awkward though? Previous, we did:
document()-&gt;unregisterForVisibilityStateChangedCallbacks(this);

But now, I think we would need to unregister the lambda, which I think would require HTMLMediaElement / AudioContext to keep the lambda they register in a member so they can unregister it later. Or am I missing something easier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293469</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-01 09:06:27 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #8)
&gt; Comment on attachment 305933 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305933&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/VisibilityChangeClient.h:35
&gt; &gt; +class VisibilityChangeClient {
&gt; &gt; +public:
&gt; &gt; +    virtual ~VisibilityChangeClient() { }
&gt; &gt; +
&gt; &gt; +    virtual void visibilityStateChanged() = 0;
&gt; &gt; +};
&gt; 
&gt; Anders recently suggested I use a lambda rather than a new &quot;client&quot; class
&gt; for an asynch callback. Maybe you should do the same thing here as long as
&gt; you have to change all of the call sites?

Note that I totally agree lambdas are better for callback to async operations. But this is not exactly the case for this code. We just want to register / unregister a listener for a specific event (visibility change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293488</commentid>
    <comment_count>11</comment_count>
      <attachid>305933</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-01 16:51:40 -0700</bug_when>
    <thetext>Comment on attachment 305933
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/VisibilityChangeClient.h:35
&gt;&gt;&gt;&gt; +};
&gt;&gt;&gt; 
&gt;&gt;&gt; Anders recently suggested I use a lambda rather than a new &quot;client&quot; class for an asynch callback. Maybe you should do the same thing here as long as you have to change all of the call sites?
&gt;&gt; 
&gt;&gt; Doesn&apos;t this make unregistering from the document a bit more awkward though? Previous, we did:
&gt;&gt; document()-&gt;unregisterForVisibilityStateChangedCallbacks(this);
&gt;&gt; 
&gt;&gt; But now, I think we would need to unregister the lambda, which I think would require HTMLMediaElement / AudioContext to keep the lambda they register in a member so they can unregister it later. Or am I missing something easier?
&gt; 
&gt; Note that I totally agree lambdas are better for callback to async operations. But this is not exactly the case for this code. We just want to register / unregister a listener for a specific event (visibility change).

I agree, it would be more awkward to use a lambda in a case like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293500</commentid>
    <comment_count>12</comment_count>
      <attachid>305933</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-01 17:55:25 -0700</bug_when>
    <thetext>Comment on attachment 305933
Patch

Clearing flags on attachment: 305933

Committed r214721: &lt;http://trac.webkit.org/changeset/214721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293501</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-04-01 17:55:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305902</attachid>
            <date>2017-03-30 14:29:33 -0700</date>
            <delta_ts>2017-03-30 14:33:26 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>170299_VisibilityChangeClient_wip.patch</filename>
            <type>text/plain</type>
            <size>17930</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApp
bmRleCAwZTFjNzhmMWNjYy4uZjdhZTJkOGJiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNs
dWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKICNpbmNsdWRlICJIUlRGUGFubmVyLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCkBAIC0xMDQsNiAr
MTA1LDggQEAgY29uc3QgaW50IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIgPSAweGZmZmZmZmZm
OwogY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkt
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVkaW9Db250ZXh0Ojoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICAgICAKIGJvb2wgQXVkaW9Db250ZXh0Ojppc1Nh
bXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKQEAgLTE5NCw2ICsxOTcsNyBA
QCBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKQogICAgIEFTU0VSVChtX3JlZmVyZW5jZWRO
b2Rlcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX2ZpbmlzaGVkTm9kZXMuaXNFbXB0eSgpKTsg
Ly8gRklYTUUgKGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlvbiBmYWlscyBvbiB0ZXN0cyBzb21l
dGltZXMuCiAgICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisKICAg
ICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpCiAgICAgICAgIG1fcmVuZGVy
aW5nQXV0b21hdGljUHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkp
OwogICAgIEFTU0VSVChtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOwpA
QCAtMjE1LDYgKzIxOSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCiAK
ICAgICAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50
KCktPmFkZEF1ZGlvUHJvZHVjZXIodGhpcyk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5yZWdp
c3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAKICAgICAgICAg
ICAgIC8vIFRoaXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2Rl
J3MgcHJvdmlkZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRv
IHJlbmRlciBhdWRpby4KICAgICAgICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBp
cyBjYWxsZWQsIGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQn
cyBjYWxsIHRoaXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1YW50dW0iLgpAQCAtMjU5LDYgKzI2
NCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQogCiAgICAgaWYgKCFpc09m
ZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNl
cih0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0
ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAKICAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250
ZXh0Q291bnQpOwogICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CkBAIC0zNjMsNiAr
MzY5LDI1IEBAIFN0cmluZyBBdWRpb0NvbnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
cigpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKK3ZvaWQgQXVkaW9Db250
ZXh0Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBp
ZiBhdWRpbyBpcyBhdWRpYmxlLgorICAgIGlmIChtZWRpYVN0YXRlKCkgPT0gTWVkaWFQcm9kdWNl
cjo6SXNQbGF5aW5nQXVkaW8pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkb2N1bWVudCgp
LT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6UnVubmluZykgewor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdl
ZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcgdG8gdGhlIGJhY2tncm91bmQiKTsK
KyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1cHRlZCkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFJlc3Vt
aW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91bmQiKTsKKyAgICAgICAgICAgIG1f
bWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJl
c3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAgfQorfQorCiBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
YXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywg
bnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYzYzMWYxZjE5ODAuLmU0MTE2OGU3ODBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIK
KyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8YXRvbWljPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAg
LTc1LDcgKzc2LDcgQEAgY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAvLyBBdWRpb0NvbnRleHQgaXMg
dGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBh
cmUgY3JlYXRlZCBmcm9tIGl0LgogLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVk
aW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBs
b2NraW5nIG1lY2hhbmlzbS4gCiAKLWNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciwgcHVibGljIE1lZGlhUHJvZHVjZXIsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQgeworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgTWVkaWFQ
cm9kdWNlciwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCwgcHJpdmF0ZSBWaXNp
YmlsaXR5Q2hhbmdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250
ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRpYyBSZWZQ
dHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTMxOSw2ICszMjAsOCBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAorICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBy
ZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDJhNGFhOGU0YjNiLi5iZjNjNGNmOGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcxMSwxMCArMjcxMSwxMCBA
QAogCQk1RTJDNDM3MTFCQ0YwRDc1MDAwMUUyQkQgLyogSlNSVENSdHBUcmFuc2NlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTJDNDM2RDFC
Q0YwRDY5MDAwMUUyQkQgLyogSlNSVENSdHBUcmFuc2NlaXZlci5jcHAgKi87IH07CiAJCTVFMkM0
MzcyMUJDRjBENzUwMDAxRTJCQyAvKiBKU1JUQ1J0cFJlY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTJDNDM2RTFCQ0YwRDY5MDAwMUUyQkMg
LyogSlNSVENSdHBSZWNlaXZlci5oICovOyB9OwogCQk1RTJDNDM3MjFCQ0YwRDc1MDAwMUUyQkQg
LyogSlNSVENSdHBUcmFuc2NlaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUUyQzQzNkUxQkNGMEQ2OTAwMDFFMkJEIC8qIEpTUlRDUnRwVHJhbnNj
ZWl2ZXIuaCAqLzsgfTsKLQkJNUUyQzQzNzMxQkNGMEQ3NTAwMDFFMkJFIC8qIEpTUlRDUnRwUGFy
YW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1RTJDNDM2RjFCQ0YwRDY5MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJzLmNwcCAqLzsg
fTsKLQkJNUUyQzQzNzQxQkNGMEQ3NTAwMDFFMkJFIC8qIEpTUlRDUnRwUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUUyQzQzNzAxQkNG
MEQ2OTAwMDFFMkJFIC8qIEpTUlRDUnRwUGFyYW1ldGVycy5oICovOyB9OwogCQk1RTJDNDM3MzFC
Q0YwRDc1MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUUyQzQzNkYxQkNGMEQ2OTAwMDFFMkJDIC8qIEpT
UlRDUnRwU2VuZGVyLmNwcCAqLzsgfTsKKwkJNUUyQzQzNzMxQkNGMEQ3NTAwMDFFMkJFIC8qIEpT
UlRDUnRwUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1RTJDNDM2RjFCQ0YwRDY5MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJz
LmNwcCAqLzsgfTsKIAkJNUUyQzQzNzQxQkNGMEQ3NTAwMDFFMkJDIC8qIEpTUlRDUnRwU2VuZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTJDNDM3
MDFCQ0YwRDY5MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuaCAqLzsgfTsKKwkJNUUyQzQzNzQx
QkNGMEQ3NTAwMDFFMkJFIC8qIEpTUlRDUnRwUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUUyQzQzNzAxQkNGMEQ2OTAwMDFFMkJFIC8q
IEpTUlRDUnRwUGFyYW1ldGVycy5oICovOyB9OwogCQk1RTJDNDM3QjFCQ0Y5QTU3MDAwMUUyQkMg
LyogUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJD
b25uZWN0aW9uQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1RTJDNDM3QzFCQ0Y5QTg0MDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rp
b25JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9u
SW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1RTRFQUIwNDFEMDcxNjZBMDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNl
c3Npb25EZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUU0RUFCMDMxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uaCAqLzsgfTsKQEAgLTMyODIsNiArMzI4Miw3IEBACiAJCTgzMTIwQzcxMUM1
NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1M
RGF0YUVsZW1lbnQuaCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0Fu
aW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFz
ZS5oICovOyB9OwogCQk4MzJCODQzNjE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICov
OyB9OworCQk4MzQwN0ZDMTFFOEQ5QzE3MDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0MDdG
QzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzQ0NzZFRTFEQTVCQzU3
MDAyQjZFRDIgLyogSlNTY3JvbGxUb09wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOUIzMDAxREE1QTUxRTAwRkZFOEY2IC8qIEpTU2Ny
b2xsVG9PcHRpb25zLmNwcCAqLzsgfTsKIAkJODM0NDc2RUYxREE1QkM1RTAwMkI2RUQyIC8qIEpT
U2Nyb2xsVG9PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0U5QjMwMTFEQTVBNTFFMDBGRkU4RjYgLyogSlNTY3JvbGxUb09wdGlvbnMuaCAq
LzsgfTsKIAkJODM0OEJGQUIxQjg1NzI5ODAwOTEyRjM2IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQ4QkZBOTFC
ODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTEwNDI3LDgg
KzEwNDI4LDggQEAKIAkJNUUyQzQzNkUxQkNGMEQ2OTAwMDFFMkJDIC8qIEpTUlRDUnRwUmVjZWl2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSVENSdHBSZWNlaXZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTJDNDM2RTFCQ0YwRDY5MDAwMUUyQkQg
LyogSlNSVENSdHBUcmFuc2NlaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1JUQ1J0cFRyYW5zY2VpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVF
MkM0MzZGMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0cFNlbmRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1J0cFNlbmRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVFMkM0MzcwMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0cFNl
bmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JUQ1J0cFNlbmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTJDNDM2RjFCQ0YwRDY5MDAwMUUyQkUg
LyogSlNSVENSdHBQYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUlRDUnRwUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVFMkM0MzcwMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0cFNlbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JUQ1J0cFNlbmRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RTJDNDM3MDFCQ0YwRDY5MDAwMUUyQkUgLyogSlNSVENSdHBQYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUlRDUnRwUGFyYW1l
dGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTJDNDM3NTFCQ0Y5QTBCMDAw
MUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSVENQZWVyQ29ubmVjdGlvbkJ1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1Bl
ZXJDb25uZWN0aW9uQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTEyNjEsNiArMTEyNjIsNyBAQAogCQk4MzI5RENDMjFDN0E2QUUzMDA3MzBCMzMgLyogSFRN
TEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEh5
cGVybGlua0VsZW1lbnRVdGlscy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYg
LyogQ2xhc3NDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENsYXNzQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
NDhCRkFBMUI4NTcyOTUwMDkxMkYzNiAvKiBDbGFzc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNEI4NkE2MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY5NSw2ICsyNTY5Nyw3IEBACiAJCQkJQkNERjMxN0Ex
MUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmggKi8sCiAJCQkJ
Q0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLywKIAkJ
CQlDRUY0MThDRDExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLywKKwkJ
CQk4MzQwN0ZDMDFFOEQ5QzEyMDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICov
LAogCQkJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAq
LywKIAkJCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICov
LAogCQkJCTMxQzBGRjFCMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5j
cHAgKi8sCkBAIC0yOTY0OCw2ICsyOTY1MSw3IEBACiAJCQkJMjZGOUE4MzkxOEEwNDZBQzAwQUVC
ODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5
QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODM0MDdGQzExRThEOUMxNzAwRTA0OEQzIC8qIFZpc2liaWxpdHlD
aGFuZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQwMEYxOUJG
NiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2
NDkyMDA1NkU1ODEgLyogVmlzaWJsZVVuaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlCQzJE
RjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjMDM2ODEzYzBlMi4uZjE3NmU0ODMzZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTUzMCwyMSArMTUzMCwyMSBAQCB2b2lkIERvY3VtZW50
Ojp0aXRsZUVsZW1lbnRUZXh0Q2hhbmdlZChFbGVtZW50JiB0aXRsZUVsZW1lbnQpCiAgICAgdXBk
YXRlVGl0bGVGcm9tVGl0bGVFbGVtZW50KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVy
Rm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50KiBlbGVtZW50KQordm9p
ZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQqIGNsaWVudCkKIHsKLSAgICBtX3Zpc2liaWxpdHlTdGF0ZUNh
bGxiYWNrRWxlbWVudHMuYWRkKGVsZW1lbnQpOworICAgIG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJh
Y2tDbGllbnRzLmFkZChjbGllbnQpOwogfQogCi12b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9y
VmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50KiBlbGVtZW50KQordm9pZCBE
b2N1bWVudDo6dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlz
aWJpbGl0eUNoYW5nZUNsaWVudCogY2xpZW50KQogewotICAgIG1fdmlzaWJpbGl0eVN0YXRlQ2Fs
bGJhY2tFbGVtZW50cy5yZW1vdmUoZWxlbWVudCk7CisgICAgbV92aXNpYmlsaXR5U3RhdGVDYWxs
YmFja0NsaWVudHMucmVtb3ZlKGNsaWVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnZpc2liaWxp
dHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkudmlzaWJpbGl0eWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBmb3Ig
KGF1dG8qIGVsZW1lbnQgOiBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMpCi0gICAg
ICAgIGVsZW1lbnQtPnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQt
PnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKIH0KIAogYXV0byBEb2N1bWVudDo6dmlzaWJpbGl0
eVN0YXRlKCkgY29uc3QgLT4gVmlzaWJpbGl0eVN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IGMwYzgzYmNkNDdmLi4yYTMxZTY4ZmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2Myw2
ICsxNjMsNyBAQCBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVHJlZVdhbGtlcjsKK2NsYXNzIFZpc2liaWxpdHlDaGFu
Z2VDbGllbnQ7CiBjbGFzcyBWaXNpdGVkTGlua1N0YXRlOwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7
CiBjbGFzcyBYUGF0aEV4cHJlc3Npb247CkBAIC0xMDA2LDggKzEwMDcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdlZCgpOwogI2VuZGlmCiAK
LSAgICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVt
ZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCByZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3Rl
ckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dCopOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcmVnaXN0ZXJGb3JBbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhUTUxNZWRpYUVsZW1lbnQm
KTsKQEAgLTE1MTgsNyArMTUxOSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxIVE1MTWVkaWFF
bGVtZW50Kj4gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdlZEVsZW1lbnRzOwog
I2VuZGlmCiAKLSAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNr
RWxlbWVudHM7CisgICAgSGFzaFNldDxWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Kj4gbV92aXNpYmls
aXR5U3RhdGVDYWxsYmFja0NsaWVudHM7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIEhhc2hTZXQ8
SFRNTE1lZGlhRWxlbWVudCo+IG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrRWxl
bWVudHM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQzOWNjY2M0YWYxLi44Y2RmMDEz
YmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MDAsOSArNDAwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0KIAotICAgIC8vIFVz
ZSBEb2N1bWVudDo6cmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCkg
dG8gc3Vic2NyaWJlIHRvIHRoaXMuCi0gICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlTdGF0ZUNo
YW5nZWQoKSB7IH0KLQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIHZvaWQg
Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Zpc2liaWxpdHlDaGFuZ2VDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uY2M3NTYzYTc0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaXNpYmls
aXR5Q2hhbmdlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaXNpYmlsaXR5Q2hhbmdl
Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgp
ID0gMDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
MTgyYmM2NjRmZTcuLjcxNmQyODY1NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRWxlbWVudFNlc3Npb24u
aCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCkBAIC0xMTEs
NiArMTEyLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgICwgcHJpdmF0ZSBNZWRpYUNh
blN0YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQKICAgICAsIHBy
aXZhdGUgTWVkaWFQcm9kdWNlcgorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305904</attachid>
            <date>2017-03-30 14:33:26 -0700</date>
            <delta_ts>2017-03-30 15:47:59 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>170299_VisibilityChangeClient_wip.patch</filename>
            <type>text/plain</type>
            <size>13698</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApp
bmRleCAwZTFjNzhmMWNjYy4uMTFkZTA0YTk5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNs
dWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKICNpbmNsdWRlICJIUlRGUGFubmVyLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50
LmgiCiAjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCkBAIC0xMDQsNiAr
MTA1LDggQEAgY29uc3QgaW50IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIgPSAweGZmZmZmZmZm
OwogY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkt
PmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVkaW9Db250ZXh0Ojoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICAgICAKIGJvb2wgQXVkaW9Db250ZXh0Ojppc1Nh
bXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKQEAgLTIxNSw2ICsyMTgsNyBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6bGF6eUluaXRpYWxpemUoKQogCiAgICAgICAgIGlmICghaXNP
ZmZsaW5lQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRBdWRpb1Byb2R1
Y2VyKHRoaXMpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JWaXNpYmlsaXR5
U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogCiAgICAgICAgICAgICAvLyBUaGlzIHN0YXJ0
cyB0aGUgYXVkaW8gdGhyZWFkLiBUaGUgZGVzdGluYXRpb24gbm9kZSdzIHByb3ZpZGVJbnB1dCgp
IG1ldGhvZCB3aWxsIG5vdyBiZSBjYWxsZWQgcmVwZWF0ZWRseSB0byByZW5kZXIgYXVkaW8uCiAg
ICAgICAgICAgICAvLyBFYWNoIHRpbWUgcHJvdmlkZUlucHV0KCkgaXMgY2FsbGVkLCBhIHBvcnRp
b24gb2YgdGhlIGF1ZGlvIHN0cmVhbSBpcyByZW5kZXJlZC4gTGV0J3MgY2FsbCB0aGlzIHRpbWUg
cGVyaW9kIGEgInJlbmRlciBxdWFudHVtIi4KQEAgLTI1OSw2ICsyNjMsNyBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6dW5pbml0aWFsaXplKCkKIAogICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpKSB7
CiAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUF1ZGlvUHJvZHVjZXIodGhpcyk7CisgICAgICAg
IGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tz
KHRoaXMpOwogCiAgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsKICAgICAg
ICAgLS1zX2hhcmR3YXJlQ29udGV4dENvdW50OwpAQCAtMzYzLDYgKzM2OCwyNSBAQCBTdHJpbmcg
QXVkaW9Db250ZXh0Ojpzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdAogICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJs
ZS4KKyAgICBpZiAobWVkaWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlv
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGlkZGVuKCkpIHsKKyAg
ICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBTdXNwZW5kaW5nIHBs
YXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICBtX21l
ZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVy
aW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3Rh
dGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5YmFjayBhZnRl
ciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5k
SW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9D
b250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIGF1dG8gYXVkaW9CdWZmZXIg
PSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBz
YW1wbGVSYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IGM2MzFmMWYxOTgwLi5lNDExNjhlNzgwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNl
ci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiVmlzaWJp
bGl0eUNoYW5nZUNsaWVudC5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC03NSw3ICs3Niw3IEBAIGNs
YXNzIFdhdmVTaGFwZXJOb2RlOwogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBv
ZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBp
dC4KIC8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhl
IG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20u
IAogCi1jbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBNZWRpYVBy
b2R1Y2VyLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50IHsKK2NsYXNzIEF1ZGlv
Q29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIE1lZGlhUHJvZHVjZXIsIHByaXZhdGUg
UGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5n
IHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KICAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
Y3JlYXRlKERvY3VtZW50Jik7CkBAIC0zMTksNiArMzIwLDggQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2
b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKwogICAgIC8vIEV2ZW50VGFyZ2V0
CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lk
IGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmI2NjBiYWQ2
Yi4uZjAxYmE4NTVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTMyODAsNiArMzI4MCw3IEBACiAJCTgzMTIwQzcxMUM1NkYz
RkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0
YUVsZW1lbnQuaCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1h
dGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5o
ICovOyB9OwogCQk4MzJCODQzNjE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
MkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovOyB9
OworCQk4MzQwN0ZDMTFFOEQ5QzE3MDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0MDdGQzAx
RThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzQ0NzZFRTFEQTVCQzU3MDAy
QjZFRDIgLyogSlNTY3JvbGxUb09wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOUIzMDAxREE1QTUxRTAwRkZFOEY2IC8qIEpTU2Nyb2xs
VG9PcHRpb25zLmNwcCAqLzsgfTsKIAkJODM0NDc2RUYxREE1QkM1RTAwMkI2RUQyIC8qIEpTU2Ny
b2xsVG9PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0U5QjMwMTFEQTVBNTFFMDBGRkU4RjYgLyogSlNTY3JvbGxUb09wdGlvbnMuaCAqLzsg
fTsKIAkJODM0OEJGQUIxQjg1NzI5ODAwOTEyRjM2IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQ4QkZBOTFCODU3
Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTExMjU4LDYgKzEx
MjU5LDcgQEAKIAkJODMyOURDQzIxQzdBNkFFMzAwNzMwQjMzIC8qIEhUTUxIeXBlcmxpbmtFbGVt
ZW50VXRpbHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxIeXBlcmxpbmtFbGVtZW50
VXRpbHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJCODQzMzE5RDhFNTUx
MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzJCODQzNTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVF
bGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNDA3RkMwMUU4
RDlDMTIwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM0OEJGQTkxQjg1NzI5NTAwOTEyRjM2IC8qIENsYXNzQ29sbGVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc0NvbGxl
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzQ4QkZBQTFCODU3Mjk1
MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENsYXNzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzRCODZBNjFDNTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU2OTIsNiArMjU2OTQsNyBAQAogCQkJCUJDREYzMTdBMTFGOEQ2ODMwMDNDNUJG
OCAvKiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oICovLAogCQkJCUNFRjQxOENDMTE3OTY3
OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJQ0VGNDE4Q0QxMTc5
Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi8sCisJCQkJODM0MDdGQzAxRThE
OUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCAqLywKIAkJCQk0MTlCQzJE
QzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi8sCiAJCQkJNDE5QkMy
REQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLywKIAkJCQkzMUMwRkYx
QjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLApAQCAtMjk2
NDQsNiArMjk2NDcsNyBAQAogCQkJCTI2RjlBODM5MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9y
dENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRkZGOUFFMTU5RDlCMDYwMDIw
QkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTgzNDA3RkMxMUU4RDlDMTcwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODgzREYyODBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNl
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUUwOTlFNjQ5MjAwNTZFNTgxIC8q
IFZpc2libGVVbml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QkMyREYxNjg1MzI5OTAwRDY0
RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggYTUxMTIzYzRkNTQuLmE5ZjcyZDUxYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTE1MzAsMjEgKzE1MzAsMjEgQEAgdm9pZCBEb2N1bWVudDo6dGl0bGVFbGVtZW50
VGV4dENoYW5nZWQoRWxlbWVudCYgdGl0bGVFbGVtZW50KQogICAgIHVwZGF0ZVRpdGxlRnJvbVRp
dGxlRWxlbWVudCgpOwogfQogCi12b2lkIERvY3VtZW50OjpyZWdpc3RlckZvclZpc2liaWxpdHlT
dGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgRG9jdW1lbnQ6OnJl
Z2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhWaXNpYmlsaXR5Q2hhbmdl
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRz
LmFkZChlbGVtZW50KTsKKyAgICBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrQ2xpZW50cy5hZGQo
Y2xpZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0
ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgRG9jdW1lbnQ6OnVucmVn
aXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZpc2liaWxpdHlDaGFuZ2VD
bGllbnQqIGNsaWVudCkKIHsKLSAgICBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMu
cmVtb3ZlKGVsZW1lbnQpOworICAgIG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tDbGllbnRzLnJl
bW92ZShjbGllbnQpOwogfQogCiB2b2lkIERvY3VtZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
KCkKIHsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnZpc2li
aWxpdHljaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgZm9yIChhdXRvKiBlbGVtZW50
IDogbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRzKQotICAgICAgICBlbGVtZW50LT52
aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX3Zpc2li
aWxpdHlTdGF0ZUNhbGxiYWNrQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT52aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCk7CiB9CiAKIGF1dG8gRG9jdW1lbnQ6OnZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0
IC0+IFZpc2liaWxpdHlTdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjMGM4M2JjZDQ3Zi4u
MmEzMWU2OGZiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjMsNiArMTYzLDcgQEAgY2xh
c3MgU3R5bGVTaGVldExpc3Q7CiBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIGNsYXNzIFRyZWVXYWxrZXI7CitjbGFzcyBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50OwogY2xh
c3MgVmlzaXRlZExpbmtTdGF0ZTsKIGNsYXNzIFhQYXRoRXZhbHVhdG9yOwogY2xhc3MgWFBhdGhF
eHByZXNzaW9uOwpAQCAtMTAwNiw4ICsxMDA3LDggQEAgcHVibGljOgogICAgIHZvaWQgdXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbkNoYW5nZWQoKTsKICNlbmRpZgogCi0gICAgdm9pZCByZWdp
c3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCopOwotICAgIHZv
aWQgdW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCop
OworICAgIHZvaWQgcmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5
U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZpc2liaWxpdHlDaGFuZ2VDbGllbnQqKTsKIAogI2lmIEVO
QUJMRShWSURFTykKICAgICB2b2lkIHJlZ2lzdGVyRm9yQWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrQ2hhbmdlZENhbGxiYWNrcyhIVE1MTWVkaWFFbGVtZW50Jik7CkBAIC0xNTE4LDcg
KzE1MTksNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IG1fdXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbkNoYW5nZWRFbGVtZW50czsKICNlbmRpZgogCi0gICAg
SGFzaFNldDxFbGVtZW50Kj4gbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRzOworICAg
IEhhc2hTZXQ8VmlzaWJpbGl0eUNoYW5nZUNsaWVudCo+IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJh
Y2tDbGllbnRzOwogI2lmIEVOQUJMRShWSURFTykKICAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0VsZW1lbnRzOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCBkMzljY2NjNGFmMS4uOGNkZjAxM2JhMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNDAwLDkgKzQwMCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0
b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAKLSAgICAvLyBVc2UgRG9jdW1lbnQ6OnJl
Z2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcygpIHRvIHN1YnNjcmliZSB0
byB0aGlzLgotICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgeyB9Ci0K
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWQoKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Zpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNj
NzU2M2E3NGZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VmlzaWJpbGl0eUNoYW5nZUNsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSA9IDA7Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDE4MmJjNjY0ZmU3Li43
MTZkMjg2NTQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJNZWRpYUVsZW1lbnRTZXNzaW9uLmgiCiAjaW5jbHVkZSAi
TWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24u
aCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgpAQCAtMTExLDYgKzExMiw3IEBAIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICAsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVy
CiAgICAgLCBwcml2YXRlIE1lZGlhUGxheWVyQ2xpZW50CiAgICAgLCBwcml2YXRlIE1lZGlhUHJv
ZHVjZXIKKyAgICAsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICAsIHByaXZhdGUgQXVkaW9UcmFja0NsaWVudAogICAgICwgcHJpdmF0
ZSBUZXh0VHJhY2tDbGllbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305915</attachid>
            <date>2017-03-30 15:47:59 -0700</date>
            <delta_ts>2017-03-30 15:48:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>170299_VisibilityChangeClient_wip.patch</filename>
            <type>text/plain</type>
            <size>17306</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhZWxlbWVudGF1ZGlvc291cmNl
bm9kZS1nYy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFlbGVtZW50YXVkaW9zb3Vy
Y2Vub2RlLWdjLmh0bWwKaW5kZXggMGFiNGEzNmEzZjEuLjg1ZTk0MmRiNGUxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYWVsZW1lbnRhdWRpb3NvdXJjZW5vZGUtZ2MuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYWVsZW1lbnRhdWRpb3NvdXJjZW5vZGUt
Z2MuaHRtbApAQCAtMjEsNiArMjEsMTAgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBhdWRp
b0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhdWRpbyIpOwogICAgIGNvbnRleHQg
PSBuZXcgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxMDAwLCA0NDEwMCk7CiAgICAgc291
cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoYXVkaW9FbGVtZW50KTsKKwor
ICAgIGF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImF1ZGlvIik7CisgICAg
Y29udGV4dCA9IG5ldyB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEwMDAsIDQ0MTAwKTsK
KyAgICBzb3VyY2UgPSBjb250ZXh0LmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShhdWRpb0VsZW1l
bnQpOwogICAgIGF1ZGlvRWxlbWVudCA9IG51bGw7CiAgICAgY29udGV4dCA9IG51bGw7CiAgICAg
c291cmNlID0gbnVsbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1h
dWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjZmNDdlZTI5MDkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50
ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCBzaWxlbnQgV2ViQXVkaW8gcmVuZGVyaW5nIGdldHMgaW50ZXJydXB0ZWQgaW4gaGlk
ZGVuIHBhZ2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZXh0
LnN0YXRlIGJlY2FtZSAncnVubmluZycKKyogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkgdG8gaGlk
ZGVuCitQQVNTIGNvbnRleHQuc3RhdGUgYmVjYW1lICdpbnRlcnJ1cHRlZCcKKyogU2V0dGluZyBw
YWdlIHZpc2liaWxpdHkgdG8gdmlzaWJsZQorUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAncnVu
bmluZycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0
ZWQtaW4tYmFja2dyb3VuZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlv
LWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uYzVjNWQ1ZGU0MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC5odG1sCkBA
IC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNpbGVudCBXZWJBdWRpbyByZW5kZXJpbmcgZ2V0cyBpbnRl
cnJ1cHRlZCBpbiBoaWRkZW4gcGFnZXMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZG9j
dW1lbnQub252aXNpYmlsaXR5Y2hhbmdlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKGRvY3VtZW50
LmhpZGRlbikgeworICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiY29udGV4dC5zdGF0ZSIsICIn
aW50ZXJydXB0ZWQnIiwgc2hvd1BhZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJl
Y29tZUVxdWFsKCJjb250ZXh0LnN0YXRlIiwgIidydW5uaW5nJyIsIGZpbmlzaEpTVGVzdCk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBzaG93UGFnZSgpCit7CisgICAgZGVidWcoIiogU2V0dGluZyBw
YWdlIHZpc2liaWxpdHkgdG8gdmlzaWJsZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRQYWdlVmlzaWJpbGl0eSgidmlzaWJsZSIpOworfQorCitm
dW5jdGlvbiBoaWRlUGFnZSgpCit7CisgICAgZGVidWcoIiogU2V0dGluZyBwYWdlIHZpc2liaWxp
dHkgdG8gaGlkZGVuIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJoaWRkZW4iKTsKK30KKworb25sb2FkID0gZnVuY3Rp
b24oKSB7CisgICAgY29udGV4dCA9IG5ldyAod2luZG93LkF1ZGlvQ29udGV4dCB8fCB3aW5kb3cu
d2Via2l0QXVkaW9Db250ZXh0KSgpOworCisgICAgYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiYXVkaW8iKTsKKyAgICBhdWRpb0VsZW1lbnQubG9vcCA9IHRydWU7CisgICAg
YXVkaW9FbGVtZW50Lm11dGVkID0gdHJ1ZTsKKyAgICBhdWRpb0VsZW1lbnQuc3JjID0gIi4uL21l
ZGlhL2NvbnRlbnQvdGVzdC53YXYiOworICAgIHNvdXJjZSA9IGNvbnRleHQuY3JlYXRlTWVkaWFF
bGVtZW50U291cmNlKGF1ZGlvRWxlbWVudCk7CisKKyAgICB2YXIgZ2Fpbk5vZGUgPSBjb250ZXh0
LmNyZWF0ZUdhaW4oKTsKKyAgICBzb3VyY2UuY29ubmVjdChnYWluTm9kZSk7CisgICAgZ2Fpbk5v
ZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICBnYWluTm9kZS5nYWluLnZhbHVl
ID0gMDsgLy8gTXV0ZS4KKworICAgIHNob3VsZEJlY29tZUVxdWFsKCJjb250ZXh0LnN0YXRlIiwg
IidydW5uaW5nJyIsIGhpZGVQYWdlKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4
IDBlMWM3OGYxY2NjLi4xMWRlMDRhOTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg
IkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2UuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIK
ICNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKQEAgLTEwNCw2ICsxMDUs
OCBAQCBjb25zdCBpbnQgVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllciA9IDB4ZmZmZmZmZmY7CiBj
b25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogICAgIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzU2FtcGxl
UmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKQogewpAQCAtMjE1LDYgKzIxOCw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCiAKICAgICAgICAgaWYgKCFpc09mZmxp
bmVDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZEF1ZGlvUHJvZHVjZXIo
dGhpcyk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0
ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAKICAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIHRo
ZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0
aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KICAgICAg
ICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBv
ZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBwZXJp
b2QgYSAicmVuZGVyIHF1YW50dW0iLgpAQCAtMjU5LDYgKzI2Myw3IEBAIHZvaWQgQXVkaW9Db250
ZXh0Ojp1bmluaXRpYWxpemUoKQogCiAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKICAg
ICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcih0aGlzKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhp
cyk7CiAKICAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOwogICAgICAgICAt
LXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CkBAIC0zNjMsNiArMzY4LDI1IEBAIFN0cmluZyBBdWRp
b0NvbnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiB9CiAKK3ZvaWQgQXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3RhdGVD
aGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBpcyBhdWRpYmxlLgor
ICAgIGlmIChtZWRpYVN0YXRlKCkgPT0gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8pCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJh
Y2sgYWZ0ZXIgZ29pbmcgdG8gdGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdC
YWNrZ3JvdW5kKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgp
ID09IFN0YXRlOjpJbnRlcnJ1cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVu
dGVyaW5nIGZvcmVncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRl
cnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAg
ICB9CisgICAgfQorfQorCiBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1
ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBs
ZVJhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKaW5kZXggYzYzMWYxZjE5ODAuLmU0MTE2OGU3ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTc1LDcgKzc2LDcgQEAgY2xhc3Mg
V2F2ZVNoYXBlck5vZGU7CiAvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRo
ZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0Lgog
Ly8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFp
biB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCiAK
LWNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIE1lZGlhUHJvZHVj
ZXIsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgeworY2xhc3MgQXVkaW9Db250
ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
TWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50IHsK
IHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8g
dGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVh
dGUoRG9jdW1lbnQmKTsKQEAgLTMxOSw2ICszMjAsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNh
blByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZvaWQg
dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCiAgICAgLy8gRXZlbnRUYXJnZXQKICAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YjY2MGJhZDZiLi5m
MDFiYTg1NWRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzI4MCw2ICszMjgwLDcgQEAKIAkJODMxMjBDNzExQzU2RjNGQjAw
MUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxl
bWVudC5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87
IH07CiAJCTgzMkI4NDM2MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0
MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi87IH07CisJ
CTgzNDA3RkMxMUU4RDlDMTcwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQwN0ZDMDFFOEQ5
QzEyMDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNDQ3NkVFMURBNUJDNTcwMDJCNkVE
MiAvKiBKU1Njcm9sbFRvT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0U5QjMwMDFEQTVBNTFFMDBGRkU4RjYgLyogSlNTY3JvbGxUb09w
dGlvbnMuY3BwICovOyB9OwogCQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjZFRDIgLyogSlNTY3JvbGxU
b09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzRTlCMzAxMURBNUE1MUUwMEZGRThGNiAvKiBKU1Njcm9sbFRvT3B0aW9ucy5oICovOyB9Owog
CQk4MzQ4QkZBQjFCODU3Mjk4MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNDhCRkE5MUI4NTcyOTUw
MDkxMkYzNiAvKiBDbGFzc0NvbGxlY3Rpb24uY3BwICovOyB9OwpAQCAtMTEyNTgsNiArMTEyNTks
NyBAQAogCQk4MzI5RENDMjFDN0E2QUUzMDA3MzBCMzMgLyogSFRNTEh5cGVybGlua0VsZW1lbnRV
dGlscy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEh5cGVybGlua0VsZW1lbnRVdGls
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIy
NjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM0MDdGQzAxRThEOUMx
MjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ29sbGVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNDhCRkFBMUI4NTcyOTUwMDkx
MkYzNiAvKiBDbGFzc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2xhc3NDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEI4
NkE2MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTY5Miw2ICsyNTY5NCw3IEBACiAJCQkJQkNERjMxN0ExMUY4RDY4MzAwM0M1QkY4IC8q
IFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmggKi8sCiAJCQkJQ0VGNDE4Q0MxMTc5Njc4QzAw
OUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLywKIAkJCQlDRUY0MThDRDExNzk2NzhD
MDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLywKKwkJCQk4MzQwN0ZDMDFFOEQ5QzEy
MDBFMDQ4RDMgLyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovLAogCQkJCTQxOUJDMkRDMTY4
NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLywKIAkJCQk0MTlCQzJERDE2
ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovLAogCQkJCTMxQzBGRjFCMEU0
Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgKi8sCkBAIC0yOTY0NCw2
ICsyOTY0Nyw3IEBACiAJCQkJMjZGOUE4MzkxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5QUUxNTlEOUIwNjAwMjBCQkQ1
IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjAw
OTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODM0MDdGQzExRThEOUMxNzAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4ODNERjI4MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogVmlz
aWJsZVVuaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQg
LyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCBhNTExMjNjNGQ1NC4uYTlmNzJkNTFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMTUzMCwyMSArMTUzMCwyMSBAQCB2b2lkIERvY3VtZW50Ojp0aXRsZUVsZW1lbnRUZXh0
Q2hhbmdlZChFbGVtZW50JiB0aXRsZUVsZW1lbnQpCiAgICAgdXBkYXRlVGl0bGVGcm9tVGl0bGVF
bGVtZW50KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRl
Q2hhbmdlZENhbGxiYWNrcyhFbGVtZW50KiBlbGVtZW50KQordm9pZCBEb2N1bWVudDo6cmVnaXN0
ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZpc2liaWxpdHlDaGFuZ2VDbGll
bnQqIGNsaWVudCkKIHsKLSAgICBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMuYWRk
KGVsZW1lbnQpOworICAgIG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tDbGllbnRzLmFkZChjbGll
bnQpOwogfQogCi12b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hh
bmdlZENhbGxiYWNrcyhFbGVtZW50KiBlbGVtZW50KQordm9pZCBEb2N1bWVudDo6dW5yZWdpc3Rl
ckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dCogY2xpZW50KQogewotICAgIG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5yZW1v
dmUoZWxlbWVudCk7CisgICAgbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHMucmVtb3Zl
KGNsaWVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKQog
ewogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudmlzaWJpbGl0
eWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBt
X3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnZpc2li
aWxpdHlTdGF0ZUNoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fdmlzaWJpbGl0
eVN0YXRlQ2FsbGJhY2tDbGllbnRzKQorICAgICAgICBjbGllbnQtPnZpc2liaWxpdHlTdGF0ZUNo
YW5nZWQoKTsKIH0KIAogYXV0byBEb2N1bWVudDo6dmlzaWJpbGl0eVN0YXRlKCkgY29uc3QgLT4g
VmlzaWJpbGl0eVN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMwYzgzYmNkNDdmLi4yYTMx
ZTY4ZmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBjbGFzcyBT
dHlsZVNoZWV0TGlzdDsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgVHJlZVdhbGtlcjsKK2NsYXNzIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQ7CiBjbGFzcyBW
aXNpdGVkTGlua1N0YXRlOwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CiBjbGFzcyBYUGF0aEV4cHJl
c3Npb247CkBAIC0xMDA2LDggKzEwMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdlZCgpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlZ2lzdGVy
Rm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7Cisg
ICAgdm9pZCByZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJp
bGl0eUNoYW5nZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0
ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCopOwogCiAjaWYgRU5BQkxF
KFZJREVPKQogICAgIHZvaWQgcmVnaXN0ZXJGb3JBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxh
eWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhUTUxNZWRpYUVsZW1lbnQmKTsKQEAgLTE1MTgsNyArMTUx
OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gbV91c2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdlZEVsZW1lbnRzOwogI2VuZGlmCiAKLSAgICBIYXNo
U2V0PEVsZW1lbnQqPiBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHM7CisgICAgSGFz
aFNldDxWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Kj4gbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0Ns
aWVudHM7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+
IG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrRWxlbWVudHM7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGQzOWNjY2M0YWYxLi44Y2RmMDEzYmEwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC00MDAsOSArNDAwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRC
ZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJl
aW5nRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0KIAotICAgIC8vIFVzZSBEb2N1bWVudDo6cmVnaXN0
ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCkgdG8gc3Vic2NyaWJlIHRvIHRo
aXMuCi0gICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSB7IH0KLQogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2Vz
Q2hhbmdlZCgpIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlz
aWJpbGl0eUNoYW5nZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2liaWxpdHlDaGFu
Z2VDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2M3NTYz
YTc0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaWJpbGl0eUNo
YW5nZUNsaWVudC5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpID0gMDsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMTgyYmM2NjRmZTcuLjcxNmQy
ODY1NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRWxlbWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRp
YVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIgor
I2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNrLmgiCkBAIC0xMTEsNiArMTEyLDcgQEAgY2xhc3Mg
SFRNTE1lZGlhRWxlbWVudAogICAgICwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAg
ICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQKICAgICAsIHByaXZhdGUgTWVkaWFQcm9kdWNl
cgorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRl
eHRUcmFja0NsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5u
ZWwuaAppbmRleCBjNDc4NzNhMTE0Yy4uYzFhZmQ5NmMxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC05OSw2ICs5OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3NpbGVudCA9IHRydWU7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiYnplcm8iKTsKIAogICAgICAgICBpZiAobV9tZW1CdWZmZXIuZ2V0KCkp
CiAgICAgICAgICAgICBtX21lbUJ1ZmZlci0+emVybygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305917</attachid>
            <date>2017-03-30 15:48:37 -0700</date>
            <delta_ts>2017-03-30 16:25:43 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>170299_VisibilityChangeClient_wip.patch</filename>
            <type>text/plain</type>
            <size>16550</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRl
ZC1pbi1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVu
dC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjZmNDdlZTI5MDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFj
a2dyb3VuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCBzaWxlbnQg
V2ViQXVkaW8gcmVuZGVyaW5nIGdldHMgaW50ZXJydXB0ZWQgaW4gaGlkZGVuIHBhZ2VzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAn
cnVubmluZycKKyogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkgdG8gaGlkZGVuCitQQVNTIGNvbnRl
eHQuc3RhdGUgYmVjYW1lICdpbnRlcnJ1cHRlZCcKKyogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkg
dG8gdmlzaWJsZQorUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAncnVubmluZycKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3Vu
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWlu
LWJhY2tncm91bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
YzVjNWQ1ZGU0MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxl
bnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IHNpbGVudCBXZWJBdWRpbyByZW5kZXJpbmcgZ2V0cyBpbnRlcnJ1cHRlZCBpbiBoaWRk
ZW4gcGFnZXMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZG9jdW1lbnQub252aXNpYmls
aXR5Y2hhbmdlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKGRvY3VtZW50LmhpZGRlbikgeworICAg
ICAgICBzaG91bGRCZWNvbWVFcXVhbCgiY29udGV4dC5zdGF0ZSIsICInaW50ZXJydXB0ZWQnIiwg
c2hvd1BhZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJjb250
ZXh0LnN0YXRlIiwgIidydW5uaW5nJyIsIGZpbmlzaEpTVGVzdCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBzaG93UGFnZSgpCit7CisgICAgZGVidWcoIiogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkg
dG8gdmlzaWJsZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRQYWdlVmlzaWJpbGl0eSgidmlzaWJsZSIpOworfQorCitmdW5jdGlvbiBoaWRlUGFn
ZSgpCit7CisgICAgZGVidWcoIiogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkgdG8gaGlkZGVuIik7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFBhZ2VW
aXNpYmlsaXR5KCJoaWRkZW4iKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgY29u
dGV4dCA9IG5ldyAod2luZG93LkF1ZGlvQ29udGV4dCB8fCB3aW5kb3cud2Via2l0QXVkaW9Db250
ZXh0KSgpOworCisgICAgYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYXVk
aW8iKTsKKyAgICBhdWRpb0VsZW1lbnQubG9vcCA9IHRydWU7CisgICAgYXVkaW9FbGVtZW50Lm11
dGVkID0gdHJ1ZTsKKyAgICBhdWRpb0VsZW1lbnQuc3JjID0gIi4uL21lZGlhL2NvbnRlbnQvdGVz
dC53YXYiOworICAgIHNvdXJjZSA9IGNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKGF1
ZGlvRWxlbWVudCk7CisKKyAgICB2YXIgZ2Fpbk5vZGUgPSBjb250ZXh0LmNyZWF0ZUdhaW4oKTsK
KyAgICBzb3VyY2UuY29ubmVjdChnYWluTm9kZSk7CisgICAgZ2Fpbk5vZGUuY29ubmVjdChjb250
ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICBnYWluTm9kZS5nYWluLnZhbHVlID0gMDsgLy8gTXV0ZS4K
KworICAgIHNob3VsZEJlY29tZUVxdWFsKCJjb250ZXh0LnN0YXRlIiwgIidydW5uaW5nJyIsIGhp
ZGVQYWdlKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDBlMWM3OGYxY2NjLi4x
MWRlMDRhOTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxv
YWRlci5oIgogI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2Uu
aCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKQEAgLTEwNCw2ICsxMDUsOCBAQCBjb25zdCBpbnQg
VW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllciA9IDB4ZmZmZmZmZmY7CiBjb25zdCB1bnNpZ25lZCBN
YXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNk
ZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE1lZGlhLCAiJXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQogICAgIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJhbmdlR29vZChm
bG9hdCBzYW1wbGVSYXRlKQogewpAQCAtMjE1LDYgKzIxOCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjpsYXp5SW5pdGlhbGl6ZSgpCiAKICAgICAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsK
ICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZEF1ZGlvUHJvZHVjZXIodGhpcyk7CisgICAgICAg
ICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFj
a3ModGhpcyk7CiAKICAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQu
IFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJl
IGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KICAgICAgICAgICAgIC8vIEVhY2gg
dGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3Ry
ZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1
YW50dW0iLgpAQCAtMjU5LDYgKzI2Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUoKQogCiAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgZG9jdW1lbnQo
KS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcih0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdp
c3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAKICAgICAgICAg
QVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOwogICAgICAgICAtLXNfaGFyZHdhcmVDb250
ZXh0Q291bnQ7CkBAIC0zNjMsNiArMzY4LDI1IEBAIFN0cmluZyBBdWRpb0NvbnRleHQ6OnNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKK3ZvaWQgQXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAg
ICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBpcyBhdWRpYmxlLgorICAgIGlmIChtZWRpYVN0
YXRlKCkgPT0gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8pCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9
PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcg
dG8gdGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbklu
dGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRl
cnJ1cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0
eVN0YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91
bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAgfQorfQor
CiBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZl
cih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0
IHNhbXBsZVJhdGUpCiB7CiAgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVh
dGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYzYzMWYx
ZjE5ODAuLmU0MTE2OGU3ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgV2F2ZVNoYXBlck5vZGU7
CiAvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJ
IGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgogLy8gRm9yIHRocmVhZCBz
YWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhh
cyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCiAKLWNsYXNzIEF1ZGlvQ29u
dGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGlj
IE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIE1lZGlhUHJvZHVjZXIsIHByaXZhdGUgUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQgeworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExp
c3RlbmVyLCBwdWJsaWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICAv
LyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3
YXJlLgogICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmKTsK
QEAgLTMxOSw2ICszMjAsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRl
Q2hhbmdlZCgpIGZpbmFsOworCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIHsgZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YjY2MGJhZDZiLi5mMDFiYTg1NWRjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzI4MCw2ICszMjgwLDcgQEAKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxE
YXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9Owog
CQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhF
NTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgzMkI4NDM2
MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzUxOUQ4RTU3NDAwQjI2
MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi87IH07CisJCTgzNDA3RkMxMUU4RDlD
MTcwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzQwN0ZDMDFFOEQ5QzEyMDBFMDQ4RDMgLyog
VmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTgzNDQ3NkVFMURBNUJDNTcwMDJCNkVEMiAvKiBKU1Njcm9sbFRv
T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0U5QjMwMDFEQTVBNTFFMDBGRkU4RjYgLyogSlNTY3JvbGxUb09wdGlvbnMuY3BwICovOyB9
OwogCQk4MzQ0NzZFRjFEQTVCQzVFMDAyQjZFRDIgLyogSlNTY3JvbGxUb09wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTlCMzAxMURBNUE1
MUUwMEZGRThGNiAvKiBKU1Njcm9sbFRvT3B0aW9ucy5oICovOyB9OwogCQk4MzQ4QkZBQjFCODU3
Mjk4MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNDhCRkE5MUI4NTcyOTUwMDkxMkYzNiAvKiBDbGFz
c0NvbGxlY3Rpb24uY3BwICovOyB9OwpAQCAtMTEyNTgsNiArMTEyNTksNyBAQAogCQk4MzI5REND
MjFDN0E2QUUzMDA3MzBCMzMgLyogSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmlt
YXRlRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1
MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNDhCRkFBMUI4NTcyOTUwMDkxMkYzNiAvKiBDbGFzc0Nv
bGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEI4NkE2MUM1NkU4M0EwMEYz
RjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxE
YXRhRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY5Miw2ICsy
NTY5NCw3IEBACiAJCQkJQkNERjMxN0ExMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yLmggKi8sCiAJCQkJQ0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdw
b3J0QXJndW1lbnRzLmNwcCAqLywKIAkJCQlDRUY0MThDRDExNzk2NzhDMDA5RDExMkMgLyogVmll
d3BvcnRBcmd1bWVudHMuaCAqLywKKwkJCQk4MzQwN0ZDMDFFOEQ5QzEyMDBFMDQ4RDMgLyogVmlz
aWJpbGl0eUNoYW5nZUNsaWVudC5oICovLAogCQkJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAv
KiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLywKIAkJCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQg
LyogVmlzaXRlZExpbmtTdGF0ZS5oICovLAogCQkJCTMxQzBGRjFCMEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgKi8sCkBAIC0yOTY0NCw2ICsyOTY0Nyw3IEBACiAJ
CQkJMjZGOUE4MzkxOEEwNDZBQzAwQUVCODhBIC8qIFZpZXdwb3J0Q29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJM0ZGRkY5QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5
bGVSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgx
IC8qIFZpc2libGVQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM0MDdGQzExRThEOUMx
NzAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4ODNERjI4MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVVuaXRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhNTExMjNj
NGQ1NC4uYTlmNzJkNTFhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTUzMCwyMSAr
MTUzMCwyMSBAQCB2b2lkIERvY3VtZW50Ojp0aXRsZUVsZW1lbnRUZXh0Q2hhbmdlZChFbGVtZW50
JiB0aXRsZUVsZW1lbnQpCiAgICAgdXBkYXRlVGl0bGVGcm9tVGl0bGVFbGVtZW50KCk7CiB9CiAK
LXZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNr
cyhFbGVtZW50KiBlbGVtZW50KQordm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJGb3JWaXNpYmlsaXR5
U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZpc2liaWxpdHlDaGFuZ2VDbGllbnQqIGNsaWVudCkKIHsK
LSAgICBtX3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHMuYWRkKGVsZW1lbnQpOworICAg
IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tDbGllbnRzLmFkZChjbGllbnQpOwogfQogCi12b2lk
IERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhF
bGVtZW50KiBlbGVtZW50KQordm9pZCBEb2N1bWVudDo6dW5yZWdpc3RlckZvclZpc2liaWxpdHlT
dGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCogY2xpZW50KQogewot
ICAgIG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5yZW1vdmUoZWxlbWVudCk7Cisg
ICAgbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHMucmVtb3ZlKGNsaWVudCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudmlzaWJpbGl0eWNoYW5nZUV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKLSAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBtX3Zpc2liaWxpdHlTdGF0
ZUNhbGxiYWNrRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnQtPnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tD
bGllbnRzKQorICAgICAgICBjbGllbnQtPnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKTsKIH0KIAog
YXV0byBEb2N1bWVudDo6dmlzaWJpbGl0eVN0YXRlKCkgY29uc3QgLT4gVmlzaWJpbGl0eVN0YXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMwYzgzYmNkNDdmLi4yYTMxZTY4ZmIyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBjbGFzcyBTdHlsZVNoZWV0TGlzdDsK
IGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVHJlZVdhbGtl
cjsKK2NsYXNzIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQ7CiBjbGFzcyBWaXNpdGVkTGlua1N0YXRl
OwogY2xhc3MgWFBhdGhFdmFsdWF0b3I7CiBjbGFzcyBYUGF0aEV4cHJlc3Npb247CkBAIC0xMDA2
LDggKzEwMDcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uQ2hhbmdlZCgpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCByZWdpc3Rl
ckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVu
dCopOworICAgIHZvaWQgdW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFj
a3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCopOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZv
aWQgcmVnaXN0ZXJGb3JBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2Fs
bGJhY2tzKEhUTUxNZWRpYUVsZW1lbnQmKTsKQEAgLTE1MTgsNyArMTUxOSw3IEBAIHByaXZhdGU6
CiAgICAgSGFzaFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gbV91c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uQ2hhbmdlZEVsZW1lbnRzOwogI2VuZGlmCiAKLSAgICBIYXNoU2V0PEVsZW1lbnQqPiBt
X3Zpc2liaWxpdHlTdGF0ZUNhbGxiYWNrRWxlbWVudHM7CisgICAgSGFzaFNldDxWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50Kj4gbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHM7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IG1fYWxsb3dzTWVkaWFE
b2N1bWVudElubGluZVBsYXliYWNrRWxlbWVudHM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IGQzOWNjY2M0YWYxLi44Y2RmMDEzYmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MDAs
OSArNDAwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVu
RWxlbWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVs
ZW1lbnQoKSB7IH0KIAotICAgIC8vIFVzZSBEb2N1bWVudDo6cmVnaXN0ZXJGb3JWaXNpYmlsaXR5
U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCkgdG8gc3Vic2NyaWJlIHRvIHRoaXMuCi0gICAgdmlydHVh
bCB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSB7IH0KLQogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpIHsgfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaWJpbGl0eUNoYW5nZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2liaWxpdHlDaGFuZ2VDbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2M3NTYzYTc0ZmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpID0gMDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMTgyYmM2NjRmZTcuLjcxNmQyODY1NDUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIk1lZGlhRWxlbWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAj
aW5jbHVkZSAiVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIlZpc2li
aWxpdHlDaGFuZ2VDbGllbnQuaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRl
ICJBdWRpb1RyYWNrLmgiCkBAIC0xMTEsNiArMTEyLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVu
dAogICAgICwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgTWVk
aWFQbGF5ZXJDbGllbnQKICAgICAsIHByaXZhdGUgTWVkaWFQcm9kdWNlcgorICAgICwgcHJpdmF0
ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwg
cHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAppbmRleCBjNDc4
NzNhMTE0Yy4uYzFhZmQ5NmMxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQ2hhbm5lbC5oCkBAIC05OSw2ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBtX3NpbGVudCA9IHRydWU7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
Ynplcm8iKTsKIAogICAgICAgICBpZiAobV9tZW1CdWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBt
X21lbUJ1ZmZlci0+emVybygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305923</attachid>
            <date>2017-03-30 16:25:44 -0700</date>
            <delta_ts>2017-03-30 18:25:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170299-20170330162541.patch</filename>
            <type>text/plain</type>
            <size>19189</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUzMjBhMjM5NTQ5NDJj
OTcwOWI2NjhhOGI4ZDJkZDU2ZmM0MjdmOS4uNWZkZWY1MWVmYTI4MDI0YTg0YzA3NTJhYzAyZTcw
YjFhMWVkYzQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAzLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIHBhdXNlIHNp
bGVudCBXZWJBdWRpbyByZW5kZXJpbmcgaW4gYmFja2dyb3VuZCB0YWJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAyOTkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMxMjg5MTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlIHNob3VsZCBwYXVzZSBzaWxlbnQgV2ViQXVkaW8gcmVuZGVyaW5nIGlu
IGJhY2tncm91bmQgdGFicyBzaW5jZSBpdCB1c2VzIENQVSBhbmQgaXMKKyAgICAgICAgbm90IG9i
c2VydmFibGUgYnkgdGhlIHVzZXIuIFN1Y2ggc2lsZW50IFdlYkF1ZGlvIHJlbmRlcmluZyBzZWVt
cyB0byBiZSB1c2VkIGJ5CisgICAgICAgIGRvdWJsZWNsaWNrIGFkcy4KKworICAgICAgICBUZXN0
OiB3ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpyZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFu
Z2VkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VmlzaWJpbGl0eUNoYW5nZUNsaWVudDo6flZpc2liaWxpdHlDaGFu
Z2VDbGllbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCiAyMDE3LTAz
LTMwICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtjc3MtYWxpZ25dIEFkYXB0IGNvbnRlbnQtYWxpZ25tZW50IHByb3BlcnRpZXMgdG8gdGhlIG5l
dyBiYXNlbGluZSBzeW50YXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcAppbmRleCAwZTFjNzhmMWNjY2EzYjIwYWZkMGViYWRmNmNiZmEyODFk
YWQ2MTA3Li4xMWRlMDRhOTk3OWZhZjhkMWZhNzI2NTg5ZjE0NDMwNzZhZTM4NzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC01
NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFJURlBhbm5lci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oIgpAQCAtMTA0LDYgKzEwNSw4IEBAIGNvbnN0IGludCBVbmRlZmluZWRUaHJlYWRJZGVu
dGlmaWVyID0gMHhmZmZmZmZmZjsKIGNvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0
aCA9IDQwOTY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpLT5wYWdlKCkgJiYg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVkaWEsICIl
cCAtIEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAgICAgCiBib29s
IEF1ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCiB7
CkBAIC0yMTUsNiArMjE4LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXplKCkK
IAogICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICAgICAgZG9jdW1l
bnQoKS0+YWRkQXVkaW9Qcm9kdWNlcih0aGlzKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnJl
Z2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKIAogICAgICAg
ICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhlIGRlc3RpbmF0aW9uIG5v
ZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2FsbGVkIHJlcGVhdGVkbHkg
dG8gcmVuZGVyIGF1ZGlvLgogICAgICAgICAgICAgLy8gRWFjaCB0aW1lIHByb3ZpZGVJbnB1dCgp
IGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0gaXMgcmVuZGVyZWQuIExl
dCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1bSIuCkBAIC0yNTksNiAr
MjYzLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCiAKICAgICBpZiAoIWlz
T2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1
Y2VyKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKIAogICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNv
bnRleHRDb3VudCk7CiAgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKQEAgLTM2Myw2
ICszNjgsMjUgQEAgU3RyaW5nIEF1ZGlvQ29udGV4dDo6c291cmNlQXBwbGljYXRpb25JZGVudGlm
aWVyKCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAordm9pZCBBdWRpb0Nv
bnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKQoreworICAgIC8vIERvIG5vdCBzdXNwZW5k
IGlmIGF1ZGlvIGlzIGF1ZGlibGUuCisgICAgaWYgKG1lZGlhU3RhdGUoKSA9PSBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdBdWRpbykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50
KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFu
Z2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFja2dyb3VuZCIp
OworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgUmVz
dW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdyb3VuZCIpOworICAgICAgICAgICAg
bV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5
UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIEV4Y2VwdGlvbk9yPFJlZjxB
dWRpb0J1ZmZlcj4+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAg
ICBhdXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxz
LCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBjNjMxZjFmMTk4MDViYjZlMjcyYzYzZWIy
ODgwYTIyOTdiYzkyMDFiLi5lNDExNjhlNzgwY2FkNzYyMzk4NDUwY2E5YzE1MzBkYjZjYmY4ZTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24u
aCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8YXRvbWlj
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
QEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAvLyBBdWRpb0NvbnRleHQg
aXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2Rl
cyBhcmUgY3JlYXRlZCBmcm9tIGl0LgogLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUg
YXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFw
aCBsb2NraW5nIG1lY2hhbmlzbS4gCiAKLWNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3Rp
dmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBw
dWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciwgcHVibGljIE1lZGlhUHJvZHVjZXIsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQgeworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgTWVk
aWFQcm9kdWNlciwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCwgcHJpdmF0ZSBW
aXNpYmlsaXR5Q2hhbmdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9D
b250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRpYyBS
ZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTMxOSw2ICszMjAsOCBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAorICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwor
CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
eyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU2YjY2MGJhZDZiZTkyODQ3NzExYWRiOWE2ZWNiZTNlMWQ5MjQzZjAuLmYwMWJh
ODU1ZGNmODY2NWJlYTVjNzBmMTE0YjI1OTgzMzFlMjg4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyODAsNiArMzI4MCw3
IEBACiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4
M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1
MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9OwogCQk4MzJCODQzNjE5RDhFNTc0MDBCMjYwNTUg
LyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRl
RWxlbWVudEJhc2UuY3BwICovOyB9OworCQk4MzQwN0ZDMTFFOEQ5QzE3MDBFMDQ4RDMgLyogVmlz
aWJpbGl0eUNoYW5nZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4MzQ0NzZFRTFEQTVCQzU3MDAyQjZFRDIgLyogSlNTY3JvbGxUb09wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOUIzMDAxREE1QTUx
RTAwRkZFOEY2IC8qIEpTU2Nyb2xsVG9PcHRpb25zLmNwcCAqLzsgfTsKIAkJODM0NDc2RUYxREE1
QkM1RTAwMkI2RUQyIC8qIEpTU2Nyb2xsVG9PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5QjMwMTFEQTVBNTFFMDBGRkU4RjYgLyogSlNT
Y3JvbGxUb09wdGlvbnMuaCAqLzsgfTsKIAkJODM0OEJGQUIxQjg1NzI5ODAwOTEyRjM2IC8qIENs
YXNzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKQEAgLTExMjU4LDYgKzExMjU5LDcgQEAKIAkJODMyOURDQzIxQzdBNkFFMzAwNzMwQjMz
IC8qIEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJCODQzNTE5RDhFNTc0MDBCMjYwNTUg
LyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzNDA3RkMwMUU4RDlDMTIwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0OEJGQTkxQjg1NzI5NTAw
OTEyRjM2IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDbGFzc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzQ4QkZBQTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzRCODZBNjFDNTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFF
bGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU2OTIsNiArMjU2OTQsNyBAQAogCQkJCUJD
REYzMTdBMTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oICov
LAogCQkJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAg
Ki8sCiAJCQkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmgg
Ki8sCisJCQkJODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFuZ2VDbGll
bnQuaCAqLywKIAkJCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0
ZS5jcHAgKi8sCiAJCQkJNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3Rh
dGUuaCAqLywKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9u
RXZlbnQuY3BwICovLApAQCAtMjk2NDQsNiArMjk2NDcsNyBAQAogCQkJCTI2RjlBODM5MThBMDQ2
QUMwMEFFQjg4QSAvKiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTNGRkZGOUFFMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxlUG9zaXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTgzNDA3RkMxMUU4RDlDMTcwMEUwNDhEMyAvKiBWaXNp
YmlsaXR5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgzREYyODBGM0QwNDVE
MDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlF
MUUwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVVbml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE5QkMyREYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTUxMTIzYzRkNTQzMDVlYzAyOWE4YmM1
N2Y0NDg1MjQyZmVkNjNiOC4uYTlmNzJkNTFhYzM4YzhiYTczZTk1ODVmYjQ5ZjMxNTI1M2FmN2M5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNTMwLDIxICsxNTMwLDIxIEBAIHZvaWQg
RG9jdW1lbnQ6OnRpdGxlRWxlbWVudFRleHRDaGFuZ2VkKEVsZW1lbnQmIHRpdGxlRWxlbWVudCkK
ICAgICB1cGRhdGVUaXRsZUZyb21UaXRsZUVsZW1lbnQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6
cmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqIGVsZW1l
bnQpCit2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxs
YmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCogY2xpZW50KQogewotICAgIG1fdmlzaWJpbGl0
eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5hZGQoZWxlbWVudCk7CisgICAgbV92aXNpYmlsaXR5U3Rh
dGVDYWxsYmFja0NsaWVudHMuYWRkKGNsaWVudCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVucmVn
aXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqIGVsZW1lbnQp
Cit2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcyhWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgbV92aXNpYmlsaXR5
U3RhdGVDYWxsYmFja0VsZW1lbnRzLnJlbW92ZShlbGVtZW50KTsKKyAgICBtX3Zpc2liaWxpdHlT
dGF0ZUNhbGxiYWNrQ2xpZW50cy5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwot
ICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50
cykKLSAgICAgICAgZWxlbWVudC0+dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpOworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHMpCisgICAgICAg
IGNsaWVudC0+dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRvIERvY3VtZW50Ojp2
aXNpYmlsaXR5U3RhdGUoKSBjb25zdCAtPiBWaXNpYmlsaXR5U3RhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggYzBjODNiY2Q0N2Y4N2Q4OTE1ZGMzYjgyY2Q0MWFlMmEzZGJjZDRlZi4uMmEzMWU2
OGZiMmQzNjc5ZmUyMmEwMWRjZmQ4YWQ4NTJlMjM3NjM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTE2Myw2ICsxNjMsNyBAQCBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFRleHQ7CiBj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVHJlZVdhbGtlcjsKK2NsYXNzIFZpc2li
aWxpdHlDaGFuZ2VDbGllbnQ7CiBjbGFzcyBWaXNpdGVkTGlua1N0YXRlOwogY2xhc3MgWFBhdGhF
dmFsdWF0b3I7CiBjbGFzcyBYUGF0aEV4cHJlc3Npb247CkBAIC0xMDA2LDggKzEwMDcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdlZCgpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcyhFbGVtZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hh
bmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCByZWdpc3RlckZvclZpc2liaWxpdHlT
dGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCopOworICAgIHZvaWQg
dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNo
YW5nZUNsaWVudCopOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcmVnaXN0ZXJGb3JB
bGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhUTUxNZWRp
YUVsZW1lbnQmKTsKQEAgLTE1MTgsNyArMTUxOSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxI
VE1MTWVkaWFFbGVtZW50Kj4gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdlZEVs
ZW1lbnRzOwogI2VuZGlmCiAKLSAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3Zpc2liaWxpdHlTdGF0
ZUNhbGxiYWNrRWxlbWVudHM7CisgICAgSGFzaFNldDxWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Kj4g
bV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHM7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrRWxlbWVudHM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQzOWNjY2M0YWYx
ZjkyOWM2ODVmMWU5MjM4NTRmMWJkZjVlYTc4M2EuLjhjZGYwMTNiYTBkNTRkNWI5M2Y2OTNmODg1
MTg2NzI5NmUwYTg4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDAwLDkgKzQwMCw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAK
LSAgICAvLyBVc2UgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENh
bGxiYWNrcygpIHRvIHN1YnNjcmliZSB0byB0aGlzLgotICAgIHZpcnR1YWwgdm9pZCB2aXNpYmls
aXR5U3RhdGVDaGFuZ2VkKCkgeyB9Ci0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdmly
dHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSB7IH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M3NTYz
YTc0ZmVmMzA0MDU2YTdhYjIxZGNlMzgxNjZmMzVkZGJjNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgKQEAgLTAsMCArMSwzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpc2li
aWxpdHlDaGFuZ2VDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCkgPSAwOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCAxODJiYzY2NGZlN2M3MjRhZTU1MTE2MjA1ZTJlN2NiY2UyZTZmNzAzLi43MTZk
Mjg2NTQ1Mzc1OWQwM2Q1NjdiMjI2OTUxZGM5OWEyMDQ3YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRWxl
bWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJBdWRpb1RyYWNr
LmgiCkBAIC0xMTEsNiArMTEyLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgICwgcHJp
dmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGll
bnQKICAgICAsIHByaXZhdGUgTWVkaWFQcm9kdWNlcgorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBBdWRp
b1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZlY2U5
M2UwYWFmMDcwOWVkZjAyOGI3MDQ3Y2M5MDM3ZmVlYTkxZGYuLmY0ZTFmMjQ3NDg0NDRkNjcwYWU4
ODQ0MTk5ZDY2Zjg1YzQyZDdiMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMy0zMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBwYXVz
ZSBzaWxlbnQgV2ViQXVkaW8gcmVuZGVyaW5nIGluIGJhY2tncm91bmQgdGFicworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjk5CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMTI4OTEzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiB3
ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1p
bi1iYWNrZ3JvdW5kLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAzLTMwICBKYXZpZXIgRmVybmFuZGV6
ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtYWxpZ25dIEFkYXB0IGNv
bnRlbnQtYWxpZ25tZW50IHByb3BlcnRpZXMgdG8gdGhlIG5ldyBiYXNlbGluZSBzeW50YXgKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1p
bi1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1h
dWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NmY0N2VlMjkwOWQ1OTc3NjZhMzhiYzAzZjRlNWFiNDQ3YmNlZjE1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tn
cm91bmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgc2lsZW50IFdl
YkF1ZGlvIHJlbmRlcmluZyBnZXRzIGludGVycnVwdGVkIGluIGhpZGRlbiBwYWdlcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGV4dC5zdGF0ZSBiZWNhbWUgJ3J1
bm5pbmcnCisqIFNldHRpbmcgcGFnZSB2aXNpYmlsaXR5IHRvIGhpZGRlbgorUEFTUyBjb250ZXh0
LnN0YXRlIGJlY2FtZSAnaW50ZXJydXB0ZWQnCisqIFNldHRpbmcgcGFnZSB2aXNpYmlsaXR5IHRv
IHZpc2libGUKK1BBU1MgY29udGV4dC5zdGF0ZSBiZWNhbWUgJ3J1bm5pbmcnCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1i
YWNrZ3JvdW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzVjNWQ1ZGU0MjM3NGM5YzZlY2I5OWJiZDBlNjc1
YWRiNTNmNjkyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3NpbGVu
dC1hdWRpby1pbnRlcnJ1cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWwKQEAgLTAsMCArMSw1MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgc2lsZW50IFdlYkF1ZGlvIHJlbmRlcmluZyBnZXRzIGludGVycnVwdGVkIGluIGhpZGRl
biBwYWdlcy4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitkb2N1bWVudC5vbnZpc2liaWxp
dHljaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7CisgICAg
ICAgIHNob3VsZEJlY29tZUVxdWFsKCJjb250ZXh0LnN0YXRlIiwgIidpbnRlcnJ1cHRlZCciLCBz
aG93UGFnZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImNvbnRl
eHQuc3RhdGUiLCAiJ3J1bm5pbmcnIiwgZmluaXNoSlNUZXN0KTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHNob3dQYWdlKCkKK3sKKyAgICBkZWJ1ZygiKiBTZXR0aW5nIHBhZ2UgdmlzaWJpbGl0eSB0
byB2aXNpYmxlIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLnNldFBhZ2VWaXNpYmlsaXR5KCJ2aXNpYmxlIik7Cit9CisKK2Z1bmN0aW9uIGhpZGVQYWdl
KCkKK3sKKyAgICBkZWJ1ZygiKiBTZXR0aW5nIHBhZ2UgdmlzaWJpbGl0eSB0byBoaWRkZW4iKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0UGFnZVZp
c2liaWxpdHkoImhpZGRlbiIpOworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBjb250
ZXh0ID0gbmV3ICh3aW5kb3cuQXVkaW9Db250ZXh0IHx8IHdpbmRvdy53ZWJraXRBdWRpb0NvbnRl
eHQpKCk7CisKKyAgICBhdWRpb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhdWRp
byIpOworICAgIGF1ZGlvRWxlbWVudC5sb29wID0gdHJ1ZTsKKyAgICBhdWRpb0VsZW1lbnQubXV0
ZWQgPSB0cnVlOworICAgIGF1ZGlvRWxlbWVudC5zcmMgPSAiLi4vbWVkaWEvY29udGVudC90ZXN0
LndhdiI7CisgICAgc291cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoYXVk
aW9FbGVtZW50KTsKKworICAgIHZhciBnYWluTm9kZSA9IGNvbnRleHQuY3JlYXRlR2FpbigpOwor
ICAgIHNvdXJjZS5jb25uZWN0KGdhaW5Ob2RlKTsKKyAgICBnYWluTm9kZS5jb25uZWN0KGNvbnRl
eHQuZGVzdGluYXRpb24pOworICAgIGdhaW5Ob2RlLmdhaW4udmFsdWUgPSAwOyAvLyBNdXRlLgor
CisgICAgc2hvdWxkQmVjb21lRXF1YWwoImNvbnRleHQuc3RhdGUiLCAiJ3J1bm5pbmcnIiwgaGlk
ZVBhZ2UpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305933</attachid>
            <date>2017-03-30 18:25:46 -0700</date>
            <delta_ts>2017-04-01 17:55:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170299-20170330182542.patch</filename>
            <type>text/plain</type>
            <size>20616</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUzMjBhMjM5NTQ5NDJj
OTcwOWI2NjhhOGI4ZDJkZDU2ZmM0MjdmOS4uZmJhOTY5ZGRjNGFkN2MxMjM3ZDdmOWQ1YmY1YjUw
OWMyMWQ3YmFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTAzLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIHBhdXNlIHNp
bGVudCBXZWJBdWRpbyByZW5kZXJpbmcgaW4gYmFja2dyb3VuZCB0YWJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAyOTkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMxMjg5MTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlIHNob3VsZCBwYXVzZSBzaWxlbnQgV2ViQXVkaW8gcmVuZGVyaW5nIGlu
IGJhY2tncm91bmQgdGFicyBzaW5jZSBpdCB1c2VzIENQVSBhbmQgaXMKKyAgICAgICAgbm90IG9i
c2VydmFibGUgYnkgdGhlIHVzZXIuIFN1Y2ggc2lsZW50IFdlYkF1ZGlvIHJlbmRlcmluZyBzZWVt
cyB0byBiZSB1c2VkIGJ5CisgICAgICAgIGRvdWJsZWNsaWNrIGFkcy4KKworICAgICAgICBUZXN0
OiB3ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC5odG1sCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKToKKyAgICAgICAgSGF2ZSBBdWRpb0NvbnRleHQg
cmVnaXN0ZXIgLyB1bnJlZ2lzdGVyIGl0c2VsZiB3aXRoIHRoZSBEb2N1bWVudCB0byBnZXQKKyAg
ICAgICAgdmlzaWJpbGl0eSBjaGFuZ2Ugbm90aWZpY2F0aW9ucywgc2ltaWxhcmx5IHRvIHdoYXQg
SFRNTE1lZGlhRWxlbWVudCB3YXMKKyAgICAgICAgYWxyZWFkeSBkb2luZy4KKworICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
QmVnaW4gLyBFbmQgc2Vzc2lvbiBpbnRlcnJ1cHRpb24gd2hlbmV2ZXIgdGhlIHBhZ2UgdmlzaWJs
aXR5IGNoYW5nZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlZpc2liaWxpdHlDaGFuZ2VDbGllbnQ6On5WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3
IFZpc2liaWxpdHlDaGFuZ2VDbGllbnQgaW50ZXJmYWNlIGFuZCBoYXZlIGJvdGggQXVkaW9Db250
ZXh0CisgICAgICAgIGFuZCBIVE1MTWVkaWFFbGVtZW50IHN1YmNsYXNzIGl0LiBQcmV2aW91c2x5
LCB0aGUgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCisgICAgICAgIGZ1bmN0aW9uIHdhcyBvbiBF
bGVtZW50IGJ1dCB0aGlzIHByZXZlbnRlZCBBdWRpb0NvbnRleHQgZnJvbSByZWdpc3RlcmluZwor
ICAgICAgICBpdHNlbGYgc2luY2UgQXVkaW9Db250ZXh0IGlzIG5vdCBhbiBFbGVtZW50LgorCiAy
MDE3LTAzLTMwICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtjc3MtYWxpZ25dIEFkYXB0IGNvbnRlbnQtYWxpZ25tZW50IHByb3BlcnRpZXMgdG8g
dGhlIG5ldyBiYXNlbGluZSBzeW50YXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwZTFjNzhmMWNjY2EzYjIwYWZkMGViYWRmNmNi
ZmEyODFkYWQ2MTA3Li4xMWRlMDRhOTk3OWZhZjhkMWZhNzI2NTg5ZjE0NDMwNzZhZTM4NzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiSFJURlBhbm5lci5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIgpAQCAtMTA0LDYgKzEwNSw4IEBAIGNvbnN0IGludCBVbmRlZmluZWRUaHJl
YWRJZGVudGlmaWVyID0gMHhmZmZmZmZmZjsKIGNvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2
ZUxlbmd0aCA9IDQwOTY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpLT5wYWdl
KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVk
aWEsICIlcCAtIEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAgICAg
CiBib29sIEF1ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJh
dGUpCiB7CkBAIC0yMTUsNiArMjE4LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFs
aXplKCkKIAogICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICAgICAg
ZG9jdW1lbnQoKS0+YWRkQXVkaW9Qcm9kdWNlcih0aGlzKTsKKyAgICAgICAgICAgIGRvY3VtZW50
KCktPnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKIAog
ICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhlIGRlc3RpbmF0
aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2FsbGVkIHJlcGVh
dGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgogICAgICAgICAgICAgLy8gRWFjaCB0aW1lIHByb3ZpZGVJ
bnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0gaXMgcmVuZGVy
ZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1bSIuCkBAIC0y
NTksNiArMjYzLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCiAKICAgICBp
ZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewogICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRp
b1Byb2R1Y2VyKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yVmlzaWJp
bGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKIAogICAgICAgICBBU1NFUlQoc19oYXJk
d2FyZUNvbnRleHRDb3VudCk7CiAgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKQEAg
LTM2Myw2ICszNjgsMjUgQEAgU3RyaW5nIEF1ZGlvQ29udGV4dDo6c291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAordm9pZCBB
dWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKQoreworICAgIC8vIERvIG5vdCBz
dXNwZW5kIGlmIGF1ZGlvIGlzIGF1ZGlibGUuCisgICAgaWYgKG1lZGlhU3RhdGUoKSA9PSBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRv
Y3VtZW50KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5u
aW5nKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFja2dy
b3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
KCkgUmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdyb3VuZCIpOworICAgICAg
ICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIEV4Y2VwdGlvbk9y
PFJlZjxBdWRpb0J1ZmZlcj4+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51
bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICBhdXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNo
YW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBjNjMxZjFmMTk4MDViYjZlMjcy
YzYzZWIyODgwYTIyOTdiYzkyMDFiLi5lNDExNjhlNzgwY2FkNzYyMzk4NDUwY2E5YzE1MzBkYjZj
YmY4ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNl
c3Npb24uaCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8
YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KQEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAvLyBBdWRpb0Nv
bnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVk
aW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgogLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2Vl
biB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmlu
ZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCiAKLWNsYXNzIEF1ZGlvQ29udGV4dCA6IHB1Ymxp
YyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRl
eHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lciwgcHVibGljIE1lZGlhUHJvZHVjZXIsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQgeworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJs
aWMgTWVkaWFQcm9kdWNlciwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCwgcHJp
dmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4g
QXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0
YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTMxOSw2ICsz
MjAsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIo
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZp
bmFsOworCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsg
ZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGU2YjY2MGJhZDZiZTkyODQ3NzExYWRiOWE2ZWNiZTNlMWQ5MjQzZjAu
LmYwMWJhODU1ZGNmODY2NWJlYTVjNzBmMTE0YjI1OTgzMzFlMjg4ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyODAsNiAr
MzI4MCw3IEBACiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3
MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKIAkJODMyQjg0MzQx
OUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1
IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9OwogCQk4MzJCODQzNjE5RDhFNTc0MDBC
MjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwICovOyB9OworCQk4MzQwN0ZDMTFFOEQ5QzE3MDBFMDQ4RDMg
LyogVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlD
aGFuZ2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4MzQ0NzZFRTFEQTVCQzU3MDAyQjZFRDIgLyogSlNTY3JvbGxUb09wdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOUIzMDAx
REE1QTUxRTAwRkZFOEY2IC8qIEpTU2Nyb2xsVG9PcHRpb25zLmNwcCAqLzsgfTsKIAkJODM0NDc2
RUYxREE1QkM1RTAwMkI2RUQyIC8qIEpTU2Nyb2xsVG9PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5QjMwMTFEQTVBNTFFMDBGRkU4RjYg
LyogSlNTY3JvbGxUb09wdGlvbnMuaCAqLzsgfTsKIAkJODM0OEJGQUIxQjg1NzI5ODAwOTEyRjM2
IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzQ4QkZBOTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9u
LmNwcCAqLzsgfTsKQEAgLTExMjU4LDYgKzExMjU5LDcgQEAKIAkJODMyOURDQzIxQzdBNkFFMzAw
NzMwQjMzIC8qIEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEhUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJCODQzNTE5RDhFNTc0MDBC
MjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzNDA3RkMwMUU4RDlDMTIwMEUwNDhEMyAvKiBWaXNpYmlsaXR5Q2hh
bmdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2liaWxpdHlD
aGFuZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0OEJGQTkxQjg1
NzI5NTAwOTEyRjM2IC8qIENsYXNzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGFzc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzQ4QkZBQTFCODU3Mjk1MDA5MTJGMzYgLyogQ2xhc3NDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzQ29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCODZBNjFDNTZFODNBMDBGM0YwRTMgLyogSFRN
TERhdGFFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU2OTIsNiArMjU2OTQsNyBAQAog
CQkJCUJDREYzMTdBMTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRv
ci5oICovLAogCQkJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50
cy5jcHAgKi8sCiAJCQkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1l
bnRzLmggKi8sCisJCQkJODM0MDdGQzAxRThEOUMxMjAwRTA0OEQzIC8qIFZpc2liaWxpdHlDaGFu
Z2VDbGllbnQuaCAqLywKIAkJCQk0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExp
bmtTdGF0ZS5jcHAgKi8sCiAJCQkJNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRM
aW5rU3RhdGUuaCAqLywKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwICovLApAQCAtMjk2NDQsNiArMjk2NDcsNyBAQAogCQkJCTI2RjlBODM5
MThBMDQ2QUMwMEFFQjg4QSAvKiBWaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTNGRkZGOUFFMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTIwMDk5RTY0OTIwMDU2RTU4MSAvKiBWaXNpYmxl
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTgzNDA3RkMxMUU4RDlDMTcwMEUwNDhEMyAv
KiBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgzREYyODBG
M0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMzMDlFMUUwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVVbml0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE5QkMyREYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTUxMTIzYzRkNTQzMDVlYzAy
OWE4YmM1N2Y0NDg1MjQyZmVkNjNiOC4uYTlmNzJkNTFhYzM4YzhiYTczZTk1ODVmYjQ5ZjMxNTI1
M2FmN2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNTMwLDIxICsxNTMwLDIxIEBA
IHZvaWQgRG9jdW1lbnQ6OnRpdGxlRWxlbWVudFRleHRDaGFuZ2VkKEVsZW1lbnQmIHRpdGxlRWxl
bWVudCkKICAgICB1cGRhdGVUaXRsZUZyb21UaXRsZUVsZW1lbnQoKTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6cmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQq
IGVsZW1lbnQpCit2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCogY2xpZW50KQogewotICAgIG1fdmlz
aWJpbGl0eVN0YXRlQ2FsbGJhY2tFbGVtZW50cy5hZGQoZWxlbWVudCk7CisgICAgbV92aXNpYmls
aXR5U3RhdGVDYWxsYmFja0NsaWVudHMuYWRkKGNsaWVudCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6
OnVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqIGVs
ZW1lbnQpCit2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdl
ZENhbGxiYWNrcyhWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgbV92aXNp
YmlsaXR5U3RhdGVDYWxsYmFja0VsZW1lbnRzLnJlbW92ZShlbGVtZW50KTsKKyAgICBtX3Zpc2li
aWxpdHlTdGF0ZUNhbGxiYWNrQ2xpZW50cy5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBEb2N1
bWVudDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS52aXNpYmlsaXR5Y2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOwotICAgIGZvciAoYXV0byogZWxlbWVudCA6IG1fdmlzaWJpbGl0eVN0YXRlQ2FsbGJhY2tF
bGVtZW50cykKLSAgICAgICAgZWxlbWVudC0+dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpOworICAg
IGZvciAoYXV0byogY2xpZW50IDogbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpOwogfQogCiBhdXRvIERvY3Vt
ZW50Ojp2aXNpYmlsaXR5U3RhdGUoKSBjb25zdCAtPiBWaXNpYmlsaXR5U3RhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKaW5kZXggYzBjODNiY2Q0N2Y4N2Q4OTE1ZGMzYjgyY2Q0MWFlMmEzZGJjZDRlZi4u
MmEzMWU2OGZiMmQzNjc5ZmUyMmEwMWRjZmQ4YWQ4NTJlMjM3NjM5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFRl
eHQ7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVHJlZVdhbGtlcjsKK2NsYXNz
IFZpc2liaWxpdHlDaGFuZ2VDbGllbnQ7CiBjbGFzcyBWaXNpdGVkTGlua1N0YXRlOwogY2xhc3Mg
WFBhdGhFdmFsdWF0b3I7CiBjbGFzcyBYUGF0aEV4cHJlc3Npb247CkBAIC0xMDA2LDggKzEwMDcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hhbmdl
ZCgpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdl
ZENhbGxiYWNrcyhFbGVtZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCByZWdpc3RlckZvclZpc2li
aWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNsaWVudCopOworICAg
IHZvaWQgdW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJp
bGl0eUNoYW5nZUNsaWVudCopOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcmVnaXN0
ZXJGb3JBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhU
TUxNZWRpYUVsZW1lbnQmKTsKQEAgLTE1MTgsNyArMTUxOSw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aFNldDxIVE1MTWVkaWFFbGVtZW50Kj4gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uQ2hh
bmdlZEVsZW1lbnRzOwogI2VuZGlmCiAKLSAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX3Zpc2liaWxp
dHlTdGF0ZUNhbGxiYWNrRWxlbWVudHM7CisgICAgSGFzaFNldDxWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50Kj4gbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHM7CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+IG1fYWxsb3dzTWVkaWFEb2N1bWVudElu
bGluZVBsYXliYWNrRWxlbWVudHM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGQzOWNj
Y2M0YWYxZjkyOWM2ODVmMWU5MjM4NTRmMWJkZjVlYTc4M2EuLjhjZGYwMTNiYTBkNTRkNWI5M2Y2
OTNmODg1MTg2NzI5NmUwYTg4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDAwLDkgKzQwMCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkg
eyB9CiAKLSAgICAvLyBVc2UgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hh
bmdlZENhbGxiYWNrcygpIHRvIHN1YnNjcmliZSB0byB0aGlzLgotICAgIHZpcnR1YWwgdm9pZCB2
aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgeyB9Ci0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSB7IH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2M3NTYzYTc0ZmVmMzA0MDU2YTdhYjIxZGNlMzgxNjZmMzVkZGJjNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgKQEAgLTAsMCAr
MSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
flZpc2liaWxpdHlDaGFuZ2VDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpYmls
aXR5U3RhdGVDaGFuZ2VkKCkgPSAwOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCAxODJiYzY2NGZlN2M3MjRhZTU1MTE2MjA1ZTJlN2NiY2UyZTZmNzAz
Li43MTZkMjg2NTQ1Mzc1OWQwM2Q1NjdiMjI2OTUxZGM5OWEyMDQ3YTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk1l
ZGlhRWxlbWVudFNlc3Npb24uaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVk
ZSAiVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlD
aGFuZ2VDbGllbnQuaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJBdWRp
b1RyYWNrLmgiCkBAIC0xMTEsNiArMTEyLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAg
ICwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHByaXZhdGUgTWVkaWFQbGF5
ZXJDbGllbnQKICAgICAsIHByaXZhdGUgTWVkaWFQcm9kdWNlcgorICAgICwgcHJpdmF0ZSBWaXNp
YmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0
ZSBBdWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGZlY2U5M2UwYWFmMDcwOWVkZjAyOGI3MDQ3Y2M5MDM3ZmVlYTkxZGYuLmY0ZTFmMjQ3NDg0NDRk
NjcwYWU4ODQ0MTk5ZDY2Zjg1YzQyZDdiMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0w
My0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3Vs
ZCBwYXVzZSBzaWxlbnQgV2ViQXVkaW8gcmVuZGVyaW5nIGluIGJhY2tncm91bmQgdGFicworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjk5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zMTI4OTEzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAg
ICAgKiB3ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3VuZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL3NpbGVudC1hdWRpby1pbnRlcnJ1
cHRlZC1pbi1iYWNrZ3JvdW5kLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAzLTMwICBKYXZpZXIgRmVy
bmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtYWxpZ25dIEFk
YXB0IGNvbnRlbnQtYWxpZ25tZW50IHByb3BlcnRpZXMgdG8gdGhlIG5ldyBiYXNlbGluZSBzeW50
YXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNWRiOTIz
YTQ5NzA2MDgwM2RlNDg0YzUwMjUxYmY5MTVhZTgzMDRmZi4uMWU3ZjYwM2IyNmY4OGVkMWJhYzVm
ZjRkNjYzYWU3ZjkzMzQyNjAzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTMxMSw2ICszMTEsNyBAQCB3ZWJraXQub3JnL2IvMTY1Nzk5IG1lZGlhL21l
ZGlhLXBsYXliYWNrLXBhZ2UtdmlzaWJpbGl0eS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2Iv
MTY1Nzk5IHN2Zy9hbmltYXRpb25zL2FuaW1hdGlvbnMtcGF1c2VkLXBhZ2Utbm9uLXZpc2libGUu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2NTc5OSBzdmcvYW5pbWF0aW9ucy9hbmltYXRp
b25zLXBhdXNlZC1pbi1iYWNrZ3JvdW5kLXBhZ2UtaWZyYW1lLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xNjU3OTkgc3ZnL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy1wYXVzZWQtaW4tYmFja2dy
b3VuZC1wYWdlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjU3OTkgd2ViYXVkaW8vc2ls
ZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRtbCBbIFNraXAgXQogCiAjIEF1
dG9GaWxsIGJ1dHRvbiBpcyBub3Qgc3VwcG9ydGVkCiBmYXN0L2Zvcm1zL2F1dG8tZmlsbC1idXR0
b24vbW91c2UtZG93bi1pbnB1dC1tb3VzZS1yZWxlYXNlLWF1dG8tZmlsbC1idXR0b24uaHRtbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVk
LWluLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50
LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI2ZjQ3ZWUyOTA5ZDU5Nzc2NmEzOGJjMDNmNGU1YWI0NDdiY2VmMTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFj
a2dyb3VuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCBzaWxlbnQg
V2ViQXVkaW8gcmVuZGVyaW5nIGdldHMgaW50ZXJydXB0ZWQgaW4gaGlkZGVuIHBhZ2VzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAn
cnVubmluZycKKyogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkgdG8gaGlkZGVuCitQQVNTIGNvbnRl
eHQuc3RhdGUgYmVjYW1lICdpbnRlcnJ1cHRlZCcKKyogU2V0dGluZyBwYWdlIHZpc2liaWxpdHkg
dG8gdmlzaWJsZQorUEFTUyBjb250ZXh0LnN0YXRlIGJlY2FtZSAncnVubmluZycKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJhdWRpby9zaWxlbnQtYXVkaW8taW50ZXJydXB0ZWQtaW4tYmFja2dyb3Vu
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2lsZW50LWF1ZGlvLWludGVycnVwdGVkLWlu
LWJhY2tncm91bmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNWM1ZDVkZTQyMzc0YzljNmVjYjk5YmJkMGU2
NzVhZGI1M2Y2OTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vc2ls
ZW50LWF1ZGlvLWludGVycnVwdGVkLWluLWJhY2tncm91bmQuaHRtbApAQCAtMCwwICsxLDUwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBzaWxlbnQgV2ViQXVkaW8gcmVuZGVyaW5nIGdldHMgaW50ZXJydXB0ZWQgaW4gaGlk
ZGVuIHBhZ2VzLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2RvY3VtZW50Lm9udmlzaWJp
bGl0eWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHsKKyAg
ICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImNvbnRleHQuc3RhdGUiLCAiJ2ludGVycnVwdGVkJyIs
IHNob3dQYWdlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiY29u
dGV4dC5zdGF0ZSIsICIncnVubmluZyciLCBmaW5pc2hKU1Rlc3QpOworICAgIH0KK30KKworZnVu
Y3Rpb24gc2hvd1BhZ2UoKQoreworICAgIGRlYnVnKCIqIFNldHRpbmcgcGFnZSB2aXNpYmlsaXR5
IHRvIHZpc2libGUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIuc2V0UGFnZVZpc2liaWxpdHkoInZpc2libGUiKTsKK30KKworZnVuY3Rpb24gaGlkZVBh
Z2UoKQoreworICAgIGRlYnVnKCIqIFNldHRpbmcgcGFnZSB2aXNpYmlsaXR5IHRvIGhpZGRlbiIp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRQYWdl
VmlzaWJpbGl0eSgiaGlkZGVuIik7Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGNv
bnRleHQgPSBuZXcgKHdpbmRvdy5BdWRpb0NvbnRleHQgfHwgd2luZG93LndlYmtpdEF1ZGlvQ29u
dGV4dCkoKTsKKworICAgIGF1ZGlvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImF1
ZGlvIik7CisgICAgYXVkaW9FbGVtZW50Lmxvb3AgPSB0cnVlOworICAgIGF1ZGlvRWxlbWVudC5t
dXRlZCA9IHRydWU7CisgICAgYXVkaW9FbGVtZW50LnNyYyA9ICIuLi9tZWRpYS9jb250ZW50L3Rl
c3Qud2F2IjsKKyAgICBzb3VyY2UgPSBjb250ZXh0LmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShh
dWRpb0VsZW1lbnQpOworCisgICAgdmFyIGdhaW5Ob2RlID0gY29udGV4dC5jcmVhdGVHYWluKCk7
CisgICAgc291cmNlLmNvbm5lY3QoZ2Fpbk5vZGUpOworICAgIGdhaW5Ob2RlLmNvbm5lY3QoY29u
dGV4dC5kZXN0aW5hdGlvbik7CisgICAgZ2Fpbk5vZGUuZ2Fpbi52YWx1ZSA9IDA7IC8vIE11dGUu
CisKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgiY29udGV4dC5zdGF0ZSIsICIncnVubmluZyciLCBo
aWRlUGFnZSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>