<?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>158190</bug_id>
          
          <creation_ts>2016-05-29 01:45:58 -0700</creation_ts>
          <short_desc>WebRTC: Imlement MediaEndpointPeerConnection::setLocalDescription()</short_desc>
          <delta_ts>2016-06-08 00:40:57 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197469</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-29 01:45:58 -0700</bug_when>
    <thetext>RTCPeerConnection::setLocalDescription() [1] sets a local description created with createOffer() or createAnswer().

[1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#dom-rtcpeerconnection-setlocaldescription</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200128</commentid>
    <comment_count>1</comment_count>
      <attachid>280724</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-07 11:12:41 -0700</bug_when>
    <thetext>Created attachment 280724
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200199</commentid>
    <comment_count>2</comment_count>
      <attachid>280724</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-06-07 14:26:14 -0700</bug_when>
    <thetext>Comment on attachment 280724
Proposed patch

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

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:161
&gt; +    RefPtr&lt;MediaEndpointSessionConfiguration&gt; configurationSnapshot = internalLocalDescription() ?
&gt; +        internalLocalDescription()-&gt;configuration()-&gt;clone() : MediaEndpointSessionConfiguration::create();

Nit: it may be worth putting internalLocalDescription() into a local instead of calling it twice.

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:258
&gt; +    unsigned previousNumberOfMediaDescriptions = internalLocalDescription() ?
&gt; +        internalLocalDescription()-&gt;configuration()-&gt;mediaDescriptions().size() : 0;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200347</commentid>
    <comment_count>3</comment_count>
      <attachid>280775</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-07 23:26:03 -0700</bug_when>
    <thetext>Created attachment 280775
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200348</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-07 23:27:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 280724 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280724&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:161
&gt; &gt; +    RefPtr&lt;MediaEndpointSessionConfiguration&gt; configurationSnapshot = internalLocalDescription() ?
&gt; &gt; +        internalLocalDescription()-&gt;configuration()-&gt;clone() : MediaEndpointSessionConfiguration::create();
&gt; 
&gt; Nit: it may be worth putting internalLocalDescription() into a local instead
&gt; of calling it twice.

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:258
&gt; &gt; +    unsigned previousNumberOfMediaDescriptions = internalLocalDescription() ?
&gt; &gt; +        internalLocalDescription()-&gt;configuration()-&gt;mediaDescriptions().size() : 0;
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200373</commentid>
    <comment_count>5</comment_count>
      <attachid>280775</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-08 00:35:41 -0700</bug_when>
    <thetext>Comment on attachment 280775
Patch for landing

Clearing flags on attachment: 280775

Committed r201798: &lt;http://trac.webkit.org/changeset/201798&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280724</attachid>
            <date>2016-06-07 11:12:41 -0700</date>
            <delta_ts>2016-06-07 14:26:14 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>mepc-set-local_0.patch</filename>
            <type>text/plain</type>
            <size>38412</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNzM2Mzk1Li5mMjJjZDcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDYt
MDcgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogSW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2Nh
bERlc2NyaXB0aW9uKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODE5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBuZXcgdGVzdCBmb3IgUlRDUGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlw
dGlvbi4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0
TG9jYWxEZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZl
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgU2V0IHR3byBsb2NhbCBvZmZlcnMgYXMgbG9jYWwgZGVz
Y3JpcHRpb25zIGFuZCBpbnNwZWN0IHRoZSBzdGF0ZSBjaGFuZ2VzLiBBbHNvIHNldCBzb21lCisg
ICAgICAgIGRlc2NyaXB0aW9ucyB3aXRoIGJhZCB0eXBlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2tpcCB0aGUgYWJvdmUgdGVzdCBmb3IgbWFj
IChub3QgYnVpbGRpbmcgd2l0aCBXRUJfUlRDKQorCiAyMDE2LTA2LTA2ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIGZhaWxlZCBpbiBn
ZXQtYnktcG5hbWUuanMgd2hlbiBydW4gd2l0aCBKU0NfdXNlTExJTlQ9ZmFsc2UgYW5kIDIgb3Ro
ZXIgY29uZmlndXJhdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExv
Y2FsRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjU5MGM4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tb2ZmZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTggQEAKK1Rlc3QgUlRDUGVlckNvbm5lY3Rpb24uc2V0
TG9jYWxEZXNjcmlwdGlvbiBjYWxsZWQgd2l0aCBhbiBSVENTZXNzaW9uRGVzY3JpcHRpb24gb2Yg
dHlwZSAnb2ZmZXInCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBjLnNp
Z25hbGluZ1N0YXRlIGlzICdzdGFibGUnCitQQVNTIHBjLmxvY2FsRGVzY3JpcHRpb24gaXMgbnVs
bAorUEFTUyBwYy5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBpcyBudWxsCitQQVNTIHBjLmN1cnJl
bnRMb2NhbERlc2NyaXB0aW9uIGlzIG51bGwKKworUEFTUyBHb3Qgc3RyZWFtCisqKiogQWRkIGF1
ZGlvVHJhY2suCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyAxCitQQVNTIGF1
ZGlvVHJhbnNjZWl2ZXIubWlkIGlzIG51bGwKKworUEFTUyBHb3QgZmlyc3RPZmZlcgorUEFTUyBw
Yy5zaWduYWxpbmdTdGF0ZSBpcyAnc3RhYmxlJworUEFTUyBhdWRpb1RyYW5zY2VpdmVyLm1pZCBp
cyBudWxsCisKK1BBU1MgZmlyc3RPZmZlciBzZXQgYXMgbG9jYWwgZGVzY3JpcHRpb24KK1BBU1Mg
cGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtbG9jYWwtb2ZmZXInCitQQVNTIHBjLmxvY2FsRGVz
Y3JpcHRpb24gaXMgZmlyc3RPZmZlcgorUEFTUyBwYy5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiBp
cyBmaXJzdE9mZmVyCitQQVNTIHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIGlzIG51bGwKK1BB
U1MgZmlyc3RPZmZlci50eXBlIGlzIHBjLmxvY2FsRGVzY3JpcHRpb24udHlwZQorUEFTUyBmaXJz
dE9mZmVyLnNkcCBpcyBwYy5sb2NhbERlc2NyaXB0aW9uLnNkcAorUEFTUyB0eXBlb2YgcGMuZ2V0
VHJhbnNjZWl2ZXJzKClbMF0ubWlkID09ICdzdHJpbmcnIGlzIHRydWUKK1NldCBmaXJzdE9mZmVy
IGFzIGxvY2FsIGRlc2NyaXB0aW9uIGFnYWluLgorCitQQVNTIGZpcnN0T2ZmZXIgc2V0IGFzIGxv
Y2FsIGRlc2NyaXB0aW9uIChhZ2FpbikKK1BBU1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUt
bG9jYWwtb2ZmZXInCisKKyoqKiBUcnkgc2V0dGluZyBsb2NhbCBkZXNjcmlwdGlvbnMgd2l0aCBi
YWQgdHlwZXMgZm9yIHRoZSBjdXJyZW50IHN0YXRlCitQQVNTIHByb21pc2UgcGMuc2V0TG9jYWxE
ZXNjcmlwdGlvbihuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHt0eXBlOidhbnN3ZXInLCBzZHA6
Zmlyc3RPZmZlci5zZHB9KSk7IHJlamVjdGVkIHdpdGggRXJyb3I6IEludmFsaWRTdGF0ZUVycm9y
OiBET00gRXhjZXB0aW9uIDExCitQQVNTIHByb21pc2UgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihu
ZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHt0eXBlOidwcmFuc3dlcicsIHNkcDpmaXJzdE9mZmVy
LnNkcH0pKTsgcmVqZWN0ZWQgd2l0aCBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNl
cHRpb24gMTEKKworKioqIEFkZCB2aWRlb1RyYWNrCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygp
Lmxlbmd0aCBpcyAyCisqKiogRmluZCB0aGUgdHJhbnNjZWl2ZXIgZm9yIHRoZSBuZXdseSBhZGRl
ZCB2aWRlbyB0cmFjaworUEFTUyB2aWRlb1RyYW5zY2VpdmVyIGlzIGRlZmluZWQuCitQQVNTIHZp
ZGVvVHJhbnNjZWl2ZXIubWlkIGlzIG51bGwKKworUEFTUyBHb3Qgc2Vjb25kT2ZmZXIKK1BBU1Mg
cGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtbG9jYWwtb2ZmZXInCitQQVNTIHZpZGVvVHJhbnNj
ZWl2ZXIubWlkIGlzIG51bGwKKworUEFTUyBzZWNvbmRPZmZlciBzZXQgYXMgbG9jYWwgZGVzY3Jp
cHRpb24KK1BBU1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtbG9jYWwtb2ZmZXInCitQQVNT
IHBjLmxvY2FsRGVzY3JpcHRpb24gaXMgc2Vjb25kT2ZmZXIKK1BBU1MgcGMucGVuZGluZ0xvY2Fs
RGVzY3JpcHRpb24gaXMgc2Vjb25kT2ZmZXIKK1BBU1MgcGMuY3VycmVudExvY2FsRGVzY3JpcHRp
b24gaXMgbnVsbAorUEFTUyBzZWNvbmRPZmZlci50eXBlIGlzIHBjLmxvY2FsRGVzY3JpcHRpb24u
dHlwZQorUEFTUyBzZWNvbmRPZmZlci5zZHAgaXMgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAKK1BB
U1MgdHlwZW9mIHZpZGVvVHJhbnNjZWl2ZXIubWlkID09ICdzdHJpbmcnIGlzIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2Fs
RGVzY3JpcHRpb24tb2ZmZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhOWM2OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3Jp
cHRpb24tb2ZmZXIuaHRtbApAQCAtMCwwICsxLDE0NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Byb21pc2UtdXRpbHMuanMiPjwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZh
ciBzdHJlYW07CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKKyAgICAgICAgICAgIHZhciB2
aWRlb1RyYWNrOworICAgICAgICAgICAgdmFyIGZpcnN0T2ZmZXI7CisgICAgICAgICAgICB2YXIg
YXVkaW9UcmFuc2NlaXZlcjsKKyAgICAgICAgICAgIHZhciB2aWRlb1RyYW5zY2VpdmVyOworCisg
ICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdCBSVENQZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERl
c2NyaXB0aW9uIGNhbGxlZCB3aXRoIGFuIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBvZiB0eXBlICdv
ZmZlciciKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBy
dW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lciIpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgcGMgPSBuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmxzOidzdHVuOmZvby5jb20nfV19KTsKKwor
ICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0YXRlIiwgIidzdGFibGUnIik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlTnVsbCgicGMubG9jYWxEZXNjcmlwdGlvbiIpOworICAgICAg
ICAgICAgc2hvdWxkQmVOdWxsKCJwYy5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiIpOworICAgICAg
ICAgICAgc2hvdWxkQmVOdWxsKCJwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIpOworICAgICAg
ICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7ICJhdWRpbyI6IHRydWUsICJ2aWRlbyI6IHRydWUgfSkKKyAgICAgICAgICAg
IC50aGVuKGZ1bmN0aW9uIChzKSB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiR290IHN0
cmVhbSIpOworICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CisgICAgICAgICAgICAgICAgYXVk
aW9UcmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgICAgICAgICAgICAgIHZp
ZGVvVHJhY2sgPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsKKworICAgICAgICAgICAgICAg
IGRlYnVnKCIqKiogQWRkIGF1ZGlvVHJhY2suIik7CisgICAgICAgICAgICAgICAgcGMuYWRkVHJh
Y2soYXVkaW9UcmFjaywgc3RyZWFtKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5n
ZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgIGF1ZGlvVHJh
bnNjZWl2ZXIgPSBwYy5nZXRUcmFuc2NlaXZlcnMoKVswXTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZU51bGwoImF1ZGlvVHJhbnNjZWl2ZXIubWlkIik7CisgICAgICAgICAgICAgICAgZGVidWco
IiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCk7CisgICAgICAg
ICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKG9mZmVyKSB7CisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiR290IGZpcnN0T2ZmZXIiKTsKKyAgICAgICAgICAgICAgICBmaXJz
dE9mZmVyID0gb2ZmZXI7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuc2lnbmFsaW5n
U3RhdGUiLCAiJ3N0YWJsZSciKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoImF1ZGlv
VHJhbnNjZWl2ZXIubWlkIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBjLnNldExvY2FsRGVzY3JpcHRpb24oZmlyc3RPZmZlcik7CisgICAg
ICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImZpcnN0T2ZmZXIgc2V0IGFzIGxvY2FsIGRlc2NyaXB0aW9uIik7CisK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuc2lnbmFsaW5nU3RhdGUiLCAiJ2hhdmUtbG9j
YWwtb2ZmZXInIik7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMubG9jYWxEZXNjcmlw
dGlvbiIsICJmaXJzdE9mZmVyIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnBlbmRp
bmdMb2NhbERlc2NyaXB0aW9uIiwgImZpcnN0T2ZmZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZU51bGwoInBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIik7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgiZmlyc3RPZmZlci50eXBlIiwgInBjLmxvY2FsRGVzY3JpcHRpb24udHlwZSIp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJmaXJzdE9mZmVyLnNkcCIsICJwYy5sb2NhbERl
c2NyaXB0aW9uLnNkcCIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Yg
cGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF0ubWlkID09ICdzdHJpbmcnIik7CisKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiU2V0IGZpcnN0T2ZmZXIgYXMgbG9jYWwgZGVzY3JpcHRpb24gYWdhaW4uIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBj
LnNldExvY2FsRGVzY3JpcHRpb24oZmlyc3RPZmZlcik7CisgICAgICAgICAgICB9KQorICAgICAg
ICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImZp
cnN0T2ZmZXIgc2V0IGFzIGxvY2FsIGRlc2NyaXB0aW9uIChhZ2FpbikiKTsKKworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJwYy5zaWduYWxpbmdTdGF0ZSIsICInaGF2ZS1sb2NhbC1vZmZlcici
KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
KioqIFRyeSBzZXR0aW5nIGxvY2FsIGRlc2NyaXB0aW9ucyB3aXRoIGJhZCB0eXBlcyBmb3IgdGhl
IGN1cnJlbnQgc3RhdGUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVNob3VsZFJl
amVjdCgicGMuc2V0TG9jYWxEZXNjcmlwdGlvbihuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHt0
eXBlOidhbnN3ZXInLCBzZHA6Zmlyc3RPZmZlci5zZHB9KSk7Iik7CisgICAgICAgICAgICB9KQor
ICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBw
cm9taXNlU2hvdWxkUmVqZWN0KCJwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG5ldyBSVENTZXNzaW9u
RGVzY3JpcHRpb24oe3R5cGU6J3ByYW5zd2VyJywgc2RwOmZpcnN0T2ZmZXIuc2RwfSkpOyIpOwor
ICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIEFkZCB2aWRl
b1RyYWNrIik7CisgICAgICAgICAgICAgICAgcGMuYWRkVHJhY2sodmlkZW9UcmFjaywgc3RyZWFt
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5n
dGgiLCAiMiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBGaW5kIHRoZSB0cmFuc2Nl
aXZlciBmb3IgdGhlIG5ld2x5IGFkZGVkIHZpZGVvIHRyYWNrIik7CisgICAgICAgICAgICAgICAg
dmFyIHRyYW5zY2VpdmVycyA9IHBjLmdldFRyYW5zY2VpdmVycygpOworICAgICAgICAgICAgICAg
IHZpZGVvVHJhbnNjZWl2ZXIgPSB0cmFuc2NlaXZlcnNbMV0uc2VuZGVyLnRyYWNrLmtpbmQgPT0g
InZpZGVvIiA/IHRyYW5zY2VpdmVyc1sxXSA6IHRyYW5zY2VpdmVyc1swXTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZURlZmluZWQoInZpZGVvVHJhbnNjZWl2ZXIiKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZEJlTnVsbCgidmlkZW9UcmFuc2NlaXZlci5taWQiKTsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcGMuY3JlYXRlT2ZmZXIoKTsK
KyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAob2ZmZXIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJHb3Qgc2Vjb25kT2ZmZXIiKTsKKyAgICAgICAgICAg
ICAgICBzZWNvbmRPZmZlciA9IG9mZmVyOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBj
LnNpZ25hbGluZ1N0YXRlIiwgIidoYXZlLWxvY2FsLW9mZmVyJyIpOworICAgICAgICAgICAgICAg
IHNob3VsZEJlTnVsbCgidmlkZW9UcmFuc2NlaXZlci5taWQiKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcGMuc2V0TG9jYWxEZXNjcmlwdGlv
bihzZWNvbmRPZmZlcik7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoInNlY29uZE9mZmVyIHNldCBhcyBs
b2NhbCBkZXNjcmlwdGlvbiIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25h
bGluZ1N0YXRlIiwgIidoYXZlLWxvY2FsLW9mZmVyJyIpOworCisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoInBjLmxvY2FsRGVzY3JpcHRpb24iLCAic2Vjb25kT2ZmZXIiKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgicGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24iLCAic2Vjb25kT2ZmZXIi
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInBjLmN1cnJlbnRMb2NhbERlc2NyaXB0
aW9uIik7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgic2Vjb25kT2ZmZXIudHlwZSIsICJw
Yy5sb2NhbERlc2NyaXB0aW9uLnR5cGUiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgic2Vj
b25kT2ZmZXIuc2RwIiwgInBjLmxvY2FsRGVzY3JpcHRpb24uc2RwIik7CisKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZVRydWUoInR5cGVvZiB2aWRlb1RyYW5zY2VpdmVyLm1pZCA9PSAnc3RyaW5n
JyIpOworCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KQor
ICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkVycm9yIGNhdWdodCBpbiBwcm9taXNlIGNoYWluOiAiICsgZXJyb3IpOworICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgIHdpbmRvdy5zdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAg
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBjMWJhN2M4Li5iZWU4OWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTkwLDYgKzE5MCw3IEBAIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tb3ZlcmxvYWRlZC1vcGVyYXRpb25zLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXItcmVwbGFjZVRyYWNrLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uLmh0bWwKK2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0
TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1sCiAKICMgQXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVi
dWcgXSBmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggYWMxODgxOC4uNjFhYjRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTkxMCw2ICs5MTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXNSZXF1ZXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uLmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dFNlc3Npb25EZXNjcmlwdGlvbi5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291
cmNlU2V0dGluZ3MuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNDlkOTFiOS4uYTFmMjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA2
LTA3ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KKworICAg
ICAgICBXZWJSVEM6IEltbGVtZW50IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9j
YWxEZXNjcmlwdGlvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgxOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gZm9yIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6c2V0TG9jYWxEZXNjcmlwdGlvbi4gVGhpcyBmdW5jdGlvbgorICAgICAgICBwYXJzZXMgdGhl
IGlucHV0IFNEUCwgY29uZmlndXJlcyB0aGUgbWVkaWEgYmFja2VuZCBhbmQgdXBkYXRlcyB0aGUK
KyAgICAgICAgUlRDUGVlckNvbm5lY3Rpb24gc3RhdGUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YWRkcyBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uIHdoaWNoIGlzIGFuIG9iamVjdCBy
ZXByZXNlbnRhdGlvbgorICAgICAgICBvZiBhbiBSVENTZXNzaW9uRGVzY3JpcHRpb24gKHdoaWNo
IGNvbnRhaW5zIGFuIFNEUCBzdHJpbmcpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgQWRkIE1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVW5hc3NvY2lhdGVkVHJh
bnNjZWl2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlT2ZmZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldExvY2FsRGVzY3JpcHRpb25UYXNrKToKKyAgICAg
ICAgQWRkIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjpsb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3VycmVudExvY2FsRGVzY3JpcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpwZW5kaW5nTG9jYWxEZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OmxvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmludGVybmFsTG9jYWxEZXNjcmlwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmNyZWF0ZVJUQ1Nl
c3Npb25EZXNjcmlwdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uOjp0b1JUQ1Nlc3Npb25EZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0
aW9uOjp0eXBlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb246OmlzTGF0ZXJUaGFuKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uOjp+TWVkaWFFbmRwb2ludFNlc3Np
b25EZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkRl
c2NyaXB0aW9uOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb246OmNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRw
b2ludFNlc3Npb25EZXNjcmlwdGlvbjo6TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbik6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBB
ZGQgTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi4KKwogMjAxNi0wNi0wNiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIwMTczNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcApp
bmRleCBiZjhhZjAyLi40MmM5M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwCkBAIC0zMyw5ICszMywxMSBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogI2luY2x1ZGUgIk1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRT
ZXNzaW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKKyNp
bmNsdWRlICJQZWVyTWVkaWFEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlJUQ09mZmVyQW5zd2Vy
T3B0aW9ucy5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiU0RQ
UHJvY2Vzc29yLmgiCkBAIC0xMTIsNiArMTE0LDEzIEBAIHN0YXRpYyBSVENSdHBUcmFuc2NlaXZl
ciogbWF0Y2hUcmFuc2NlaXZlckJ5TWlkKGNvbnN0IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0cmFu
CiAgICAgfSk7CiB9CiAKK3N0YXRpYyBib29sIGhhc1VuYXNzb2NpYXRlZFRyYW5zY2VpdmVycyhj
b25zdCBSdHBUcmFuc2NlaXZlclZlY3RvciYgdHJhbnNjZWl2ZXJzKQoreworICAgIHJldHVybiBt
YXRjaFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVycywgW10gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJy
ZW50KSB7CisgICAgICAgIHJldHVybiBjdXJyZW50Lm1pZCgpLmlzTnVsbCgpICYmICFjdXJyZW50
LnN0b3BwZWQoKTsKKyAgICB9KTsKK30KKwogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rp
b246OnJ1blRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2spCiB7CiAgICAg
aWYgKG1fZHRsc0ZpbmdlcnByaW50LmlzTnVsbCgpKSB7CkBAIC0xNDgsNyArMTU3LDggQEAgdm9p
ZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmNyZWF0ZU9mZmVyVGFzayhSVENPZmZlck9w
dGlvbnMmLCBTZXNzaW9uRGVzY3IKICAgICBpZiAobV9jbGllbnQtPmludGVybmFsU2lnbmFsaW5n
U3RhdGUoKSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
U25hcHNob3QgPSBNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b25TbmFwc2hvdCA9IGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigpID8KKyAgICAgICAgaW50ZXJu
YWxMb2NhbERlc2NyaXB0aW9uKCktPmNvbmZpZ3VyYXRpb24oKS0+Y2xvbmUoKSA6IE1lZGlhRW5k
cG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAKICAgICBjb25maWd1cmF0aW9u
U25hcHNob3QtPnNldFNlc3Npb25WZXJzaW9uKG1fc2RwT2ZmZXJTZXNzaW9uVmVyc2lvbisrKTsK
IApAQCAtMjIwLDMyICsyMzAsMTIxIEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
OjpjcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYgb3B0aW9ucywgU2Vzc2lvCiAKIHZvaWQg
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIFZvaWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRpb24pOworICAgIHJ1blRhc2soW3RoaXMsIHByb3RlY3Rl
ZERlc2NyaXB0aW9uID0gUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4oJmRlc2NyaXB0aW9u
KSwgcHJvdGVjdGVkUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CisgICAg
ICAgIHNldExvY2FsRGVzY3JpcHRpb25UYXNrKFdURk1vdmUocHJvdGVjdGVkRGVzY3JpcHRpb24p
LCBwcm90ZWN0ZWRQcm9taXNlKTsKKyAgICB9KTsKK30KIAotICAgIG5vdEltcGxlbWVudGVkKCk7
Cit2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvblRh
c2soUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4mJiBkZXNjcmlwdGlvbiwgVm9pZFByb21p
c2UmIHByb21pc2UpCit7CisgICAgaWYgKG1fY2xpZW50LT5pbnRlcm5hbFNpZ25hbGluZ1N0YXRl
KCkgPT0gU2lnbmFsaW5nU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgcHJv
bWlzZS5yZWplY3QoTk9UX1NVUFBPUlRFRF9FUlIpOworICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSBleGNlcHRpb247CisgICAgYXV0byBuZXdEZXNjcmlwdGlvbiA9IE1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShXVEZNb3ZlKGRlc2NyaXB0aW9uKSwgKm1fc2RwUHJv
Y2Vzc29yLCBleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24uY29kZSkgeworICAgICAgICBw
cm9taXNlLnJlamVjdChleGNlcHRpb24uY29kZSwgZXhjZXB0aW9uLm1lc3NhZ2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFsb2NhbERlc2NyaXB0aW9uVHlwZVZhbGlkRm9y
U3RhdGUobmV3RGVzY3JpcHRpb24tPnR5cGUoKSkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
SU5WQUxJRF9TVEFURV9FUlIsICJEZXNjcmlwdGlvbiB0eXBlIGluY29tcGF0aWJsZSB3aXRoIGN1
cnJlbnQgc2lnbmFsaW5nIHN0YXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b25zdCBSdHBUcmFuc2NlaXZlclZlY3RvciYgdHJhbnNjZWl2ZXJzID0gbV9jbGllbnQtPmdldFRy
YW5zY2VpdmVycygpOworICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb25WZWN0b3ImIG1lZGlhRGVz
Y3JpcHRpb25zID0gbmV3RGVzY3JpcHRpb24tPmNvbmZpZ3VyYXRpb24oKS0+bWVkaWFEZXNjcmlw
dGlvbnMoKTsKKyAgICB1bnNpZ25lZCBwcmV2aW91c051bWJlck9mTWVkaWFEZXNjcmlwdGlvbnMg
PSBpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKSA/CisgICAgICAgIGludGVybmFsTG9jYWxEZXNj
cmlwdGlvbigpLT5jb25maWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCkuc2l6ZSgpIDog
MDsKKyAgICBib29sIGhhc05ld01lZGlhRGVzY3JpcHRpb25zID0gbWVkaWFEZXNjcmlwdGlvbnMu
c2l6ZSgpID4gcHJldmlvdXNOdW1iZXJPZk1lZGlhRGVzY3JpcHRpb25zOworICAgIGJvb2wgaXNJ
bml0aWF0b3IgPSBuZXdEZXNjcmlwdGlvbi0+dHlwZSgpID09IFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bjo6U2RwVHlwZTo6T2ZmZXI7CisKKyAgICBpZiAoaGFzTmV3TWVkaWFEZXNjcmlwdGlvbnMpIHsK
KyAgICAgICAgTWVkaWFFbmRwb2ludDo6VXBkYXRlUmVzdWx0IHJlc3VsdCA9IG1fbWVkaWFFbmRw
b2ludC0+dXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24obmV3RGVzY3JpcHRpb24tPmNvbmZpZ3Vy
YXRpb24oKSwgaXNJbml0aWF0b3IpOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gTWVkaWFFbmRw
b2ludDo6VXBkYXRlUmVzdWx0OjpTdWNjZXNzV2l0aEljZVJlc3RhcnQpIHsKKyAgICAgICAgICAg
IGlmIChtX2NsaWVudC0+aW50ZXJuYWxJY2VHYXRoZXJpbmdTdGF0ZSgpICE9IEljZUdhdGhlcmlu
Z1N0YXRlOjpHYXRoZXJpbmcpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUljZUdh
dGhlcmluZ1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpHYXRoZXJpbmcpOworCisgICAgICAgICAg
ICBpZiAobV9jbGllbnQtPmludGVybmFsSWNlQ29ubmVjdGlvblN0YXRlKCkgIT0gSWNlQ29ubmVj
dGlvblN0YXRlOjpDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUlj
ZUNvbm5lY3Rpb25TdGF0ZShJY2VDb25uZWN0aW9uU3RhdGU6OkNvbm5lY3RlZCk7CisKKyAgICAg
ICAgICAgIExPR19FUlJPUigiSUNFIHJlc3RhcnQgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09
IE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdDo6RmFpbGVkKSB7CisgICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChPcGVyYXRpb25FcnJvciwgIlVuYWJsZSB0byBhcHBseSBzZXNzaW9uIGRlc2Ny
aXB0aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBB
c3NvY2lhdGUgbWVkaWEgZGVzY3JpcHRpb25zIHdpdGggdHJhbnNjZWl2ZXJzIChzZXQgcHJvdmlz
aW9uYWwgbWlkIHRvICdmaW5hbCcgbWlkKS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJl
dmlvdXNOdW1iZXJPZk1lZGlhRGVzY3JpcHRpb25zOyBpIDwgbWVkaWFEZXNjcmlwdGlvbnMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uJiBtZWRpYURlc2Ny
aXB0aW9uID0gKm1lZGlhRGVzY3JpcHRpb25zW2ldOworCisgICAgICAgICAgICBSVENSdHBUcmFu
c2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVycywgWyZt
ZWRpYURlc2NyaXB0aW9uXSAoUlRDUnRwVHJhbnNjZWl2ZXImIGN1cnJlbnQpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY3VycmVudC5wcm92aXNpb25hbE1pZCgpID09IG1lZGlhRGVzY3JpcHRp
b24ubWlkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICh0cmFuc2NlaXZlcikK
KyAgICAgICAgICAgICAgICB0cmFuc2NlaXZlci0+c2V0TWlkKHRyYW5zY2VpdmVyLT5wcm92aXNp
b25hbE1pZCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaGFzVW5hc3NvY2lhdGVk
VHJhbnNjZWl2ZXJzKHRyYW5zY2VpdmVycykpCisgICAgICAgIGNsZWFyTmVnb3RpYXRpb25OZWVk
ZWRTdGF0ZSgpOworCisgICAgU2lnbmFsaW5nU3RhdGUgbmV3U2lnbmFsaW5nU3RhdGU7CisKKyAg
ICAvLyBVcGRhdGUgc3RhdGUgYW5kIGxvY2FsIGRlc2NyaXB0aW9ucyBhY2NvcmRpbmcgdG8gc2V0
TG9jYWwvUmVtb3RlRGVzY3JpcHRpb24gcHJvY2Vzc2luZyBtb2RlbAorICAgIHN3aXRjaCAobmV3
RGVzY3JpcHRpb24tPnR5cGUoKSkgeworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpT
ZHBUeXBlOjpPZmZlcjoKKyAgICAgICAgbV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiA9IG5ld0Rl
c2NyaXB0aW9uOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpI
YXZlTG9jYWxPZmZlcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbjo6U2RwVHlwZTo6QW5zd2VyOgorICAgICAgICBtX2N1cnJlbnRMb2NhbERlc2NyaXB0
aW9uID0gbmV3RGVzY3JpcHRpb247CisgICAgICAgIG1fcGVuZGluZ0xvY2FsRGVzY3JpcHRpb24g
PSBudWxscHRyOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpT
dGFibGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246
OlNkcFR5cGU6OlJvbGxiYWNrOgorICAgICAgICBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKKyAgICAgICAgbmV3U2lnbmFsaW5nU3RhdGUgPSBTaWduYWxpbmdTdGF0ZTo6U3Rh
YmxlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpT
ZHBUeXBlOjpQcmFuc3dlcjoKKyAgICAgICAgbV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiA9IG5l
d0Rlc2NyaXB0aW9uOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRl
OjpIYXZlTG9jYWxQckFuc3dlcjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG5l
d1NpZ25hbGluZ1N0YXRlICE9IG1fY2xpZW50LT5pbnRlcm5hbFNpZ25hbGluZ1N0YXRlKCkpIHsK
KyAgICAgICAgbV9jbGllbnQtPnNldFNpZ25hbGluZ1N0YXRlKG5ld1NpZ25hbGluZ1N0YXRlKTsK
KyAgICAgICAgbV9jbGllbnQtPmZpcmVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aWduYWxpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICB9CisKKyAgICBp
ZiAobV9jbGllbnQtPmludGVybmFsSWNlR2F0aGVyaW5nU3RhdGUoKSA9PSBJY2VHYXRoZXJpbmdT
dGF0ZTo6TmV3ICYmIG1lZGlhRGVzY3JpcHRpb25zLnNpemUoKSkKKyAgICAgICAgbV9jbGllbnQt
PnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpHYXRoZXJpbmcpOwor
CisgICAgaWYgKG1fY2xpZW50LT5pbnRlcm5hbFNpZ25hbGluZ1N0YXRlKCkgPT0gU2lnbmFsaW5n
U3RhdGU6OlN0YWJsZSAmJiBtX25lZ290aWF0aW9uTmVlZGVkKQorICAgICAgICBtX2NsaWVudC0+
c2NoZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50KCk7CisKKyAgICBwcm9taXNlLnJlc29sdmUo
bnVsbHB0cik7CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbjo6bG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVSVENT
ZXNzaW9uRGVzY3JpcHRpb24oaW50ZXJuYWxMb2NhbERlc2NyaXB0aW9uKCkpOwogfQogCiBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmN1
cnJlbnRMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZVJUQ1Nlc3Npb25EZXNjcmlw
dGlvbihtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uLmdldCgpKTsKIH0KIAogUmVmUHRyPFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpwZW5kaW5nTG9j
YWxEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVSVENTZXNzaW9uRGVzY3JpcHRpb24obV9w
ZW5kaW5nTG9jYWxEZXNjcmlwdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBWb2lkUHJvbWlzZSYmIHByb21pc2UpCkBAIC0zMzQsNiArNDMzLDM1IEBA
IHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjptYXJrQXNOZWVkaW5nTmVnb3RpYXRp
b24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uOjpsb2NhbERlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2NsaWVudC0+
aW50ZXJuYWxTaWduYWxpbmdTdGF0ZSgpKSB7CisgICAgY2FzZSBTaWduYWxpbmdTdGF0ZTo6U3Rh
YmxlOgorICAgICAgICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5
cGU6Ok9mZmVyOworICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9mZmVyOgorICAg
ICAgICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9mZmVy
OworICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVPZmZlcjoKKyAgICAgICAgcmV0
dXJuIHR5cGUgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXIgfHwgdHlw
ZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OlByYW5zd2VyOworICAgIGNhc2Ug
U2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbFByQW5zd2VyOgorICAgICAgICByZXR1cm4gdHlwZSA9
PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dlciB8fCB0eXBlID09IFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6UHJhbnN3ZXI7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24qIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6aW50ZXJuYWxMb2NhbERlc2NyaXB0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiA/IG1fcGVuZGluZ0xv
Y2FsRGVzY3JpcHRpb24uZ2V0KCkgOiBtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uLmdldCgpOwor
fQorCitSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OmNyZWF0ZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lvbkRl
c2NyaXB0aW9uKiBkZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gZGVzY3JpcHRpb24g
PyBkZXNjcmlwdGlvbi0+dG9SVENTZXNzaW9uRGVzY3JpcHRpb24oKm1fc2RwUHJvY2Vzc29yKSA6
IG51bGxwdHI7Cit9CisKIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3REdGxz
RmluZ2VycHJpbnQoY29uc3QgU3RyaW5nJiBmaW5nZXJwcmludCwgY29uc3QgU3RyaW5nJiBmaW5n
ZXJwcmludEZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uaAppbmRleCBmNjlhMjNlLi5lY2IyOTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LCAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzQsMTkgQEAKICNpZiBFTkFCTEUo
V0VCX1JUQykKIAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnQuaCIKKyNpbmNsdWRlICJNZWRpYUVu
ZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKLSNpbmNsdWRlICJSVENTZXNzaW9u
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRp
YVN0cmVhbVRyYWNrOworY2xhc3MgUGVlck1lZGlhRGVzY3JpcHRpb247CiBjbGFzcyBTRFBQcm9j
ZXNzb3I7CiAKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4+IE1l
ZGlhRGVzY3JpcHRpb25WZWN0b3I7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVy
Pj4gUnRwU2VuZGVyVmVjdG9yOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRyYW5zY2Vp
dmVyPj4gUnRwVHJhbnNjZWl2ZXJWZWN0b3I7CiAKQEAgLTg1LDYgKzg3LDEzIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBQZWVyQ29ubmVj
dGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYpOwogCisgICAgdm9pZCBzZXRMb2NhbERl
c2NyaXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiYmLCBQZWVyQ29ubmVj
dGlvbjo6Vm9pZFByb21pc2UmKTsKKworICAgIGJvb2wgbG9jYWxEZXNjcmlwdGlvblR5cGVWYWxp
ZEZvclN0YXRlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZSkgY29uc3Q7CisKKyAgICBN
ZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uKiBpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24o
KSBjb25zdDsKKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjcmVhdGVSVENTZXNz
aW9uRGVzY3JpcHRpb24oTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiopIGNvbnN0Owor
CiAgICAgLy8gTWVkaWFFbmRwb2ludENsaWVudAogICAgIHZvaWQgZ290RHRsc0ZpbmdlcnByaW50
KGNvbnN0IFN0cmluZyYgZmluZ2VycHJpbnQsIGNvbnN0IFN0cmluZyYgZmluZ2VycHJpbnRGdW5j
dGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnb3RJY2VDYW5kaWRhdGUodW5zaWduZWQgbWRlc2NJ
bmRleCwgUmVmUHRyPEljZUNhbmRpZGF0ZT4mJikgb3ZlcnJpZGU7CkBAIC0xMDcsNiArMTE2LDEx
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZHRsc0ZpbmdlcnByaW50OwogICAgIFN0cmluZyBt
X2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uOwogICAgIHVuc2lnbmVkIG1fc2RwT2ZmZXJTZXNzaW9u
VmVyc2lvbiB7IDAgfTsKKworICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0
aW9uPiBtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uOworICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50
U2Vzc2lvbkRlc2NyaXB0aW9uPiBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uOworCisgICAgYm9v
bCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOTVkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVz
Y3JpcHRpb24uY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlNEUFByb2Nlc3Nvci5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUg
U1RSSU5HX0ZVTkNUSU9OKG5hbWUpIFwKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBuYW1lIyNT
dHJpbmcoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBT
dHJpbmc+IG5hbWUgeyBBU0NJSUxpdGVyYWwoI25hbWUpIH07IFwKKyAgICAgICAgcmV0dXJuIG5h
bWU7IFwKKyAgICB9CisKK1NUUklOR19GVU5DVElPTihvZmZlcikKK1NUUklOR19GVU5DVElPTihw
cmFuc3dlcikKK1NUUklOR19GVU5DVElPTihhbnN3ZXIpCitTVFJJTkdfRlVOQ1RJT04ocm9sbGJh
Y2spCisKK1JlZjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50
U2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBl
IHR5cGUsIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUVuZHBvaW50U2Vzc2lv
bkRlc2NyaXB0aW9uKHR5cGUsIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG51bGxwdHIpKTsKK30K
KworUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiYm
IHJ0Y0Rlc2NyaXB0aW9uLCBjb25zdCBTRFBQcm9jZXNzb3ImIHNkcFByb2Nlc3NvciwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJiBleGNlcHRpb24pCit7CisgICAgUmVmUHRyPE1lZGlhRW5kcG9p
bnRTZXNzaW9uQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbjsKKyAgICBTRFBQcm9jZXNzb3I6
OlJlc3VsdCByZXN1bHQgPSBzZHBQcm9jZXNzb3IucGFyc2UocnRjRGVzY3JpcHRpb24tPnNkcCgp
LCBjb25maWd1cmF0aW9uKTsKKyAgICBpZiAocmVzdWx0ICE9IFNEUFByb2Nlc3Nvcjo6UmVzdWx0
OjpTdWNjZXNzKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU0RQUHJvY2Vzc29yOjpSZXN1bHQ6
OlBhcnNlRXJyb3IpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlvbi5jb2RlID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICAgICAgZXhjZXB0aW9uLm1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlNE
UCBjb250ZW50IGlzIGludmFsaWQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIExPR19FUlJPUigiU0RQUHJvY2Vzc29yIGludGVybmFsIGVycm9yIik7
CisgICAgICAgIGV4Y2VwdGlvbi5jb2RlID0gQUJPUlRfRVJSOworICAgICAgICBleGNlcHRpb24u
bWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUVuZHBvaW50
U2Vzc2lvbkRlc2NyaXB0aW9uKHJ0Y0Rlc2NyaXB0aW9uLT50eXBlKCksIFdURk1vdmUoY29uZmln
dXJhdGlvbiksIFdURk1vdmUocnRjRGVzY3JpcHRpb24pKSk7Cit9CisKK1JlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OnRvUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uKGNvbnN0IFNEUFByb2Nlc3NvciYgc2RwUHJvY2Vzc29yKSBjb25zdAor
eworICAgIFN0cmluZyBzZHBTdHJpbmc7CisgICAgU0RQUHJvY2Vzc29yOjpSZXN1bHQgcmVzdWx0
ID0gc2RwUHJvY2Vzc29yLmdlbmVyYXRlKCptX2NvbmZpZ3VyYXRpb24sIHNkcFN0cmluZyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBTRFBQcm9jZXNzb3I6OlJlc3VsdDo6U3VjY2VzcykgeworICAgICAg
ICBMT0dfRVJST1IoIlNEUFByb2Nlc3NvciBpbnRlcm5hbCBlcnJvciIpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBJZiB0aGlzIG9iamVjdCB3YXMgY3JlYXRlZCBm
cm9tIGFuIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiwgdG9SVENTZXNzaW9uRGVzY3JpcHRpb24gd2ls
bCByZXR1cm4KKyAgICAvLyB0aGF0IHNhbWUgaW5zdGFuY2UgYnV0IHdpdGggYW4gdXBkYXRlZCBz
ZHAuIEl0IGlzIHVzZWQgZm9yIFJUQ1BlZXJDb25uZWN0aW9uJ3MgZGVzY3JpcHRpb24KKyAgICAv
LyBhdHJpYnV0ZXMgKGUuZy4gbG9jYWxEZXNjcmlwdGlvbiBhbmQgcGVuZGluZ0xvY2FsRGVzY3Jp
cHRpb24pLgorICAgIGlmIChtX3J0Y0Rlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fcnRjRGVzY3Jp
cHRpb24tPnNldFNkcChzZHBTdHJpbmcpOworICAgICAgICByZXR1cm4gbV9ydGNEZXNjcmlwdGlv
bjsKKyAgICB9CisKKyAgICByZXR1cm4gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUobV90
eXBlLCBzZHBTdHJpbmcpOworfQorCitjb25zdCBTdHJpbmcmIE1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb246OnR5cGVTdHJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9mZmVyOgorICAgICAg
ICByZXR1cm4gb2ZmZXJTdHJpbmcoKTsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6
U2RwVHlwZTo6UHJhbnN3ZXI6CisgICAgICAgIHJldHVybiBwcmFuc3dlclN0cmluZygpOworICAg
IGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXI6CisgICAgICAgIHJl
dHVybiBhbnN3ZXJTdHJpbmcoKTsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2Rw
VHlwZTo6Um9sbGJhY2s6CisgICAgICAgIHJldHVybiByb2xsYmFja1N0cmluZygpOworICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
fQorCitib29sIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OmlzTGF0ZXJUaGFuKE1l
ZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24qIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biAhb3RoZXIgfHwgY29uZmlndXJhdGlvbigpLT5zZXNzaW9uVmVyc2lvbigpID4gb3RoZXItPmNv
bmZpZ3VyYXRpb24oKS0+c2Vzc2lvblZlcnNpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Np
b25EZXNjcmlwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYWEy
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uaApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNz
c29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbl9oCisjZGVmaW5l
IE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb25faAorCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb247CitjbGFzcyBTRFBQ
cm9jZXNzb3I7CitjbGFzcyBET01FcnJvcjsKKworY2xhc3MgTWVkaWFFbmRwb2ludFNlc3Npb25E
ZXNjcmlwdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3Jp
cHRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVz
Y3JpcHRpb24+IGNyZWF0ZShSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGUsIFJlZlB0cjxN
ZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8
TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbj4gY3JlYXRlKFJlZlB0cjxSVENTZXNzaW9u
RGVzY3JpcHRpb24+JiYsIGNvbnN0IFNEUFByb2Nlc3NvciYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpOworICAgIHZpcnR1YWwgfk1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24oKSB7
IH0KKworICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHRvUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uKGNvbnN0IFNEUFByb2Nlc3NvciYpIGNvbnN0OworCisgICAgUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uOjpTZHBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHR5cGVTdHJpbmcoKSBjb25zdDsKKyAgICBNZWRpYUVuZHBvaW50U2Vzc2lvbkNv
bmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24uZ2V0KCk7IH0KKworICAgIGJvb2wgaXNMYXRlclRoYW4oTWVkaWFFbmRwb2ludFNlc3Npb25E
ZXNjcmlwdGlvbiogb3RoZXIpIGNvbnN0OworCitwcml2YXRlOgorICAgIE1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUsIFJl
ZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbiwg
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4mJiBydGNEZXNjcmlwdGlvbikKKyAgICAgICAg
OiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikK
KyAgICAgICAgLCBtX3J0Y0Rlc2NyaXB0aW9uKFdURk1vdmUocnRjRGVzY3JpcHRpb24pKQorICAg
IHsgfQorCisgICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIG1fdHlwZTsKKyAgICBS
ZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247
CisKKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBtX3J0Y0Rlc2NyaXB0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMp
CisKKyNlbmRpZiAvLyBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YzBm
M2E4Li43M2E0NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMzg2LDYgKzIzODYsOCBAQAogCQk1RTJDNDM3NDFCQ0YwRDc1
MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVFMkM0MzcwMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0cFNl
bmRlci5oICovOyB9OwogCQk1RTJDNDM3QjFCQ0Y5QTU3MDAwMUUyQkMgLyogUlRDUGVlckNvbm5l
Y3Rpb25CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
RTJDNDM3QzFCQ0Y5QTg0MDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUUy
QzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
RTRFQUIwNDFEMDcxNjZBMDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0RUFC
MDMxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uaCAq
LzsgfTsKKwkJNUU0RUFCMDUxRDA3MTY2RTAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUU0RUFCMDIxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVz
Y3JpcHRpb24uY3BwICovOyB9OwogCQk1RTVFMkIxMzFDRkMzRTcwMDAwQzBEODUgLyogUlRDUnRw
VHJhbnNjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUU1RTJCMTAxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAq
LzsgfTsKIAkJNUU1RTJCMTQxQ0ZDM0U3NTAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTVFMkIxMTFD
RkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RUEzRDZERjFDODU5RDdGMDAzMDBCQkIg
LyogTW9ja01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVFQTNENkRFMUM4NTlENTMwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2lu
dC5oICovOyB9OwpAQCAtOTk5NCw2ICs5OTk2LDggQEAKIAkJNUUyQzQzNzYxQkNGOUEwQjAwMDFF
MkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1RTJDNDM3ODFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rp
b25JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSVENQZWVyQ29ubmVjdGlvbkludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25u
ZWN0aW9uSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1RTRFQUIwMjFEMDcxNjRDMDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNl
c3Npb25EZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUU0RUFCMDMxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNz
aW9uRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFF
bmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTVFMkIxMTFDRkMzRTRCMDAwQzBEODUgLyog
UlRDUnRwVHJhbnNjZWl2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
UnRwVHJhbnNjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUU1RTJCMTIx
Q0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTQwNSw2ICsxNTQwOSw4IEBACiAJCQkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8q
IE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLywKIAkJCQk1RTE2QTJFMjFCRkE2NEZCMDAyOUEyMUUg
LyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1RTE2QTJFMzFCRkE2
NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggKi8sCisJCQkJNUU0
RUFCMDIxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24u
Y3BwICovLAorCQkJCTVFNEVBQjAzMUQwNzE2NEMwMDA2QTE4NCAvKiBNZWRpYUVuZHBvaW50U2Vz
c2lvbkRlc2NyaXB0aW9uLmggKi8sCiAJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1l
ZGlhU291cmNlU2V0dGluZ3MuY3BwICovLAogCQkJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAv
KiBNZWRpYVNvdXJjZVNldHRpbmdzLmggKi8sCiAJCQkJMDcyMjFCNEMxN0NFQzMyNzAwODQ4RTUx
IC8qIE1lZGlhU3RyZWFtLmNwcCAqLywKQEAgLTI3MDc0LDYgKzI3MDgwLDcgQEAKIAkJCQlFMUMz
NkQzNTBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQzM2MkVGMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI3MUE1ODBFRUVDREU0MDBGNjEyMTMgLyogSlNXb3Jr
ZXJOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTVFNEVBQjA0MUQwNzE2NkEwMDA2QTE4
NCAvKiBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODM1OENCNzAxQzUzMjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNjMwLDYgKzMxNjM3LDcgQEAKIAkJCQlFNEQ1
OEVCODE3QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0VGNDQ3RDBFNjc0ODA2MDAxQzEyODcgLyogU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEgLyog
U3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1RTRFQUIwNTFEMDcxNjZFMDAw
NkExODQgLyogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMTEwREI5RDE0RjVERjg3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMjczMDMwRTgyRjFFNjAwRTdGOTc1IC8qIFN0eWxlSW5o
ZXJpdGVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDcxMjdDQTE2MzQzOEExMDBFRDZG
NUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="304621"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280775</attachid>
            <date>2016-06-07 23:26:03 -0700</date>
            <delta_ts>2016-06-08 00:35:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>mepc-set-local_1.patch</filename>
            <type>text/plain</type>
            <size>38529</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNzM2Mzk1Li4wY2U5MzM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDYt
MDcgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogSW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2Nh
bERlc2NyaXB0aW9uKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODE5MAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAg
ICAgICBBZGQgbmV3IHRlc3QgZm9yIFJUQ1BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRp
b24uCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExv
Y2FsRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tb2ZmZXIu
aHRtbDogQWRkZWQuCisgICAgICAgIFNldCB0d28gbG9jYWwgb2ZmZXJzIGFzIGxvY2FsIGRlc2Ny
aXB0aW9ucyBhbmQgaW5zcGVjdCB0aGUgc3RhdGUgY2hhbmdlcy4gQWxzbyBzZXQgc29tZQorICAg
ICAgICBkZXNjcmlwdGlvbnMgd2l0aCBiYWQgdHlwZXMuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNraXAgdGhlIGFib3ZlIHRlc3QgZm9yIG1hYyAo
bm90IGJ1aWxkaW5nIHdpdGggV0VCX1JUQykKKwogMjAxNi0wNi0wNiAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBmYWlsZWQgaW4gZ2V0
LWJ5LXBuYW1lLmpzIHdoZW4gcnVuIHdpdGggSlNDX3VzZUxMSU5UPWZhbHNlIGFuZCAyIG90aGVy
IGNvbmZpZ3VyYXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tb2ZmZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2Nh
bERlc2NyaXB0aW9uLW9mZmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41OTBjODgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLW9mZmVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDU4IEBACitUZXN0IFJUQ1BlZXJDb25uZWN0aW9uLnNldExv
Y2FsRGVzY3JpcHRpb24gY2FsbGVkIHdpdGggYW4gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIG9mIHR5
cGUgJ29mZmVyJworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwYy5zaWdu
YWxpbmdTdGF0ZSBpcyAnc3RhYmxlJworUEFTUyBwYy5sb2NhbERlc2NyaXB0aW9uIGlzIG51bGwK
K1BBU1MgcGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24gaXMgbnVsbAorUEFTUyBwYy5jdXJyZW50
TG9jYWxEZXNjcmlwdGlvbiBpcyBudWxsCisKK1BBU1MgR290IHN0cmVhbQorKioqIEFkZCBhdWRp
b1RyYWNrLgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGggaXMgMQorUEFTUyBhdWRp
b1RyYW5zY2VpdmVyLm1pZCBpcyBudWxsCisKK1BBU1MgR290IGZpcnN0T2ZmZXIKK1BBU1MgcGMu
c2lnbmFsaW5nU3RhdGUgaXMgJ3N0YWJsZScKK1BBU1MgYXVkaW9UcmFuc2NlaXZlci5taWQgaXMg
bnVsbAorCitQQVNTIGZpcnN0T2ZmZXIgc2V0IGFzIGxvY2FsIGRlc2NyaXB0aW9uCitQQVNTIHBj
LnNpZ25hbGluZ1N0YXRlIGlzICdoYXZlLWxvY2FsLW9mZmVyJworUEFTUyBwYy5sb2NhbERlc2Ny
aXB0aW9uIGlzIGZpcnN0T2ZmZXIKK1BBU1MgcGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24gaXMg
Zmlyc3RPZmZlcgorUEFTUyBwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiBpcyBudWxsCitQQVNT
IGZpcnN0T2ZmZXIudHlwZSBpcyBwYy5sb2NhbERlc2NyaXB0aW9uLnR5cGUKK1BBU1MgZmlyc3RP
ZmZlci5zZHAgaXMgcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAKK1BBU1MgdHlwZW9mIHBjLmdldFRy
YW5zY2VpdmVycygpWzBdLm1pZCA9PSAnc3RyaW5nJyBpcyB0cnVlCitTZXQgZmlyc3RPZmZlciBh
cyBsb2NhbCBkZXNjcmlwdGlvbiBhZ2Fpbi4KKworUEFTUyBmaXJzdE9mZmVyIHNldCBhcyBsb2Nh
bCBkZXNjcmlwdGlvbiAoYWdhaW4pCitQQVNTIHBjLnNpZ25hbGluZ1N0YXRlIGlzICdoYXZlLWxv
Y2FsLW9mZmVyJworCisqKiogVHJ5IHNldHRpbmcgbG9jYWwgZGVzY3JpcHRpb25zIHdpdGggYmFk
IHR5cGVzIGZvciB0aGUgY3VycmVudCBzdGF0ZQorUEFTUyBwcm9taXNlIHBjLnNldExvY2FsRGVz
Y3JpcHRpb24obmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7dHlwZTonYW5zd2VyJywgc2RwOmZp
cnN0T2ZmZXIuc2RwfSkpOyByZWplY3RlZCB3aXRoIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMQorUEFTUyBwcm9taXNlIHBjLnNldExvY2FsRGVzY3JpcHRpb24obmV3
IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7dHlwZToncHJhbnN3ZXInLCBzZHA6Zmlyc3RPZmZlci5z
ZHB9KSk7IHJlamVjdGVkIHdpdGggRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0
aW9uIDExCisKKyoqKiBBZGQgdmlkZW9UcmFjaworUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5s
ZW5ndGggaXMgMgorKioqIEZpbmQgdGhlIHRyYW5zY2VpdmVyIGZvciB0aGUgbmV3bHkgYWRkZWQg
dmlkZW8gdHJhY2sKK1BBU1MgdmlkZW9UcmFuc2NlaXZlciBpcyBkZWZpbmVkLgorUEFTUyB2aWRl
b1RyYW5zY2VpdmVyLm1pZCBpcyBudWxsCisKK1BBU1MgR290IHNlY29uZE9mZmVyCitQQVNTIHBj
LnNpZ25hbGluZ1N0YXRlIGlzICdoYXZlLWxvY2FsLW9mZmVyJworUEFTUyB2aWRlb1RyYW5zY2Vp
dmVyLm1pZCBpcyBudWxsCisKK1BBU1Mgc2Vjb25kT2ZmZXIgc2V0IGFzIGxvY2FsIGRlc2NyaXB0
aW9uCitQQVNTIHBjLnNpZ25hbGluZ1N0YXRlIGlzICdoYXZlLWxvY2FsLW9mZmVyJworUEFTUyBw
Yy5sb2NhbERlc2NyaXB0aW9uIGlzIHNlY29uZE9mZmVyCitQQVNTIHBjLnBlbmRpbmdMb2NhbERl
c2NyaXB0aW9uIGlzIHNlY29uZE9mZmVyCitQQVNTIHBjLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9u
IGlzIG51bGwKK1BBU1Mgc2Vjb25kT2ZmZXIudHlwZSBpcyBwYy5sb2NhbERlc2NyaXB0aW9uLnR5
cGUKK1BBU1Mgc2Vjb25kT2ZmZXIuc2RwIGlzIHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwCitQQVNT
IHR5cGVvZiB2aWRlb1RyYW5zY2VpdmVyLm1pZCA9PSAnc3RyaW5nJyBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERl
c2NyaXB0aW9uLW9mZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLXNldExvY2FsRGVzY3JpcHRpb24tb2ZmZXIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTljNjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0
aW9uLW9mZmVyLmh0bWwKQEAgLTAsMCArMSwxNDcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcm9taXNlLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIg
c3RyZWFtOworICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2s7CisgICAgICAgICAgICB2YXIgdmlk
ZW9UcmFjazsKKyAgICAgICAgICAgIHZhciBmaXJzdE9mZmVyOworICAgICAgICAgICAgdmFyIGF1
ZGlvVHJhbnNjZWl2ZXI7CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFuc2NlaXZlcjsKKworICAg
ICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgUlRDUGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNj
cmlwdGlvbiBjYWxsZWQgd2l0aCBhbiBSVENTZXNzaW9uRGVzY3JpcHRpb24gb2YgdHlwZSAnb2Zm
ZXInIik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVu
IHdpdGhvdXQgdGhlIHRlc3RSdW5uZXIiKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHBjID0gbmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsczonc3R1bjpmb28uY29tJ31dfSk7CisKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJwYy5zaWduYWxpbmdTdGF0ZSIsICInc3RhYmxlJyIpOworCisg
ICAgICAgICAgICBzaG91bGRCZU51bGwoInBjLmxvY2FsRGVzY3JpcHRpb24iKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlTnVsbCgicGMucGVuZGluZ0xvY2FsRGVzY3JpcHRpb24iKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlTnVsbCgicGMuY3VycmVudExvY2FsRGVzY3JpcHRpb24iKTsKKyAgICAgICAg
ICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoeyAiYXVkaW8iOiB0cnVlLCAidmlkZW8iOiB0cnVlIH0pCisgICAgICAgICAgICAu
dGhlbihmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkdvdCBzdHJl
YW0iKTsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOworICAgICAgICAgICAgICAgIGF1ZGlv
VHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAgICAgICAgICAgICAgICB2aWRl
b1RyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CisKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIEFkZCBhdWRpb1RyYWNrLiIpOworICAgICAgICAgICAgICAgIHBjLmFkZFRyYWNr
KGF1ZGlvVHJhY2ssIHN0cmVhbSk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuZ2V0
VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAgICAgICBhdWRpb1RyYW5z
Y2VpdmVyID0gcGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF07CisgICAgICAgICAgICAgICAgc2hvdWxk
QmVOdWxsKCJhdWRpb1RyYW5zY2VpdmVyLm1pZCIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKKworICAgICAgICAgICAgICAgIHJldHVybiBwYy5jcmVhdGVPZmZlcigpOworICAgICAgICAg
ICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChvZmZlcikgeworICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoIkdvdCBmaXJzdE9mZmVyIik7CisgICAgICAgICAgICAgICAgZmlyc3RP
ZmZlciA9IG9mZmVyOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0
YXRlIiwgIidzdGFibGUnIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJhdWRpb1Ry
YW5zY2VpdmVyLm1pZCIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAg
ICAgICAgIHJldHVybiBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKGZpcnN0T2ZmZXIpOworICAgICAg
ICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJmaXJzdE9mZmVyIHNldCBhcyBsb2NhbCBkZXNjcmlwdGlvbiIpOworCisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0YXRlIiwgIidoYXZlLWxvY2Fs
LW9mZmVyJyIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLmxvY2FsRGVzY3JpcHRp
b24iLCAiZmlyc3RPZmZlciIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5wZW5kaW5n
TG9jYWxEZXNjcmlwdGlvbiIsICJmaXJzdE9mZmVyIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmVOdWxsKCJwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIpOworCisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImZpcnN0T2ZmZXIudHlwZSIsICJwYy5sb2NhbERlc2NyaXB0aW9uLnR5cGUiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZmlyc3RPZmZlci5zZHAiLCAicGMubG9jYWxEZXNj
cmlwdGlvbi5zZHAiKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHBj
LmdldFRyYW5zY2VpdmVycygpWzBdLm1pZCA9PSAnc3RyaW5nJyIpOworCisgICAgICAgICAgICAg
ICAgZGVidWcoIlNldCBmaXJzdE9mZmVyIGFzIGxvY2FsIGRlc2NyaXB0aW9uIGFnYWluLiIpOwor
ICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAgICAgIHJldHVybiBwYy5z
ZXRMb2NhbERlc2NyaXB0aW9uKGZpcnN0T2ZmZXIpOworICAgICAgICAgICAgfSkKKyAgICAgICAg
ICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJmaXJz
dE9mZmVyIHNldCBhcyBsb2NhbCBkZXNjcmlwdGlvbiAoYWdhaW4pIik7CisKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgicGMuc2lnbmFsaW5nU3RhdGUiLCAiJ2hhdmUtbG9jYWwtb2ZmZXInIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioq
KiBUcnkgc2V0dGluZyBsb2NhbCBkZXNjcmlwdGlvbnMgd2l0aCBiYWQgdHlwZXMgZm9yIHRoZSBj
dXJyZW50IHN0YXRlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VTaG91bGRSZWpl
Y3QoInBjLnNldExvY2FsRGVzY3JpcHRpb24obmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7dHlw
ZTonYW5zd2VyJywgc2RwOmZpcnN0T2ZmZXIuc2RwfSkpOyIpOworICAgICAgICAgICAgfSkKKyAg
ICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJv
bWlzZVNob3VsZFJlamVjdCgicGMuc2V0TG9jYWxEZXNjcmlwdGlvbihuZXcgUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uKHt0eXBlOidwcmFuc3dlcicsIHNkcDpmaXJzdE9mZmVyLnNkcH0pKTsiKTsKKyAg
ICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBBZGQgdmlkZW9U
cmFjayIpOworICAgICAgICAgICAgICAgIHBjLmFkZFRyYWNrKHZpZGVvVHJhY2ssIHN0cmVhbSk7
CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3Ro
IiwgIjIiKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogRmluZCB0aGUgdHJhbnNjZWl2
ZXIgZm9yIHRoZSBuZXdseSBhZGRlZCB2aWRlbyB0cmFjayIpOworICAgICAgICAgICAgICAgIHZh
ciB0cmFuc2NlaXZlcnMgPSBwYy5nZXRUcmFuc2NlaXZlcnMoKTsKKyAgICAgICAgICAgICAgICB2
aWRlb1RyYW5zY2VpdmVyID0gdHJhbnNjZWl2ZXJzWzFdLnNlbmRlci50cmFjay5raW5kID09ICJ2
aWRlbyIgPyB0cmFuc2NlaXZlcnNbMV0gOiB0cmFuc2NlaXZlcnNbMF07CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWRlb1RyYW5zY2VpdmVyIik7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZU51bGwoInZpZGVvVHJhbnNjZWl2ZXIubWlkIik7CisgICAgICAgICAgICAgICAg
ZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBjLmNyZWF0ZU9mZmVyKCk7Cisg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKG9mZmVyKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiR290IHNlY29uZE9mZmVyIik7CisgICAgICAgICAgICAg
ICAgc2Vjb25kT2ZmZXIgPSBvZmZlcjsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5z
aWduYWxpbmdTdGF0ZSIsICInaGF2ZS1sb2NhbC1vZmZlciciKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRCZU51bGwoInZpZGVvVHJhbnNjZWl2ZXIubWlkIik7CisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBjLnNldExvY2FsRGVzY3JpcHRpb24o
c2Vjb25kT2ZmZXIpOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJzZWNvbmRPZmZlciBzZXQgYXMgbG9j
YWwgZGVzY3JpcHRpb24iKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5zaWduYWxp
bmdTdGF0ZSIsICInaGF2ZS1sb2NhbC1vZmZlciciKTsKKworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJwYy5sb2NhbERlc2NyaXB0aW9uIiwgInNlY29uZE9mZmVyIik7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoInBjLnBlbmRpbmdMb2NhbERlc2NyaXB0aW9uIiwgInNlY29uZE9mZmVyIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJwYy5jdXJyZW50TG9jYWxEZXNjcmlwdGlv
biIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInNlY29uZE9mZmVyLnR5cGUiLCAicGMu
bG9jYWxEZXNjcmlwdGlvbi50eXBlIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInNlY29u
ZE9mZmVyLnNkcCIsICJwYy5sb2NhbERlc2NyaXB0aW9uLnNkcCIpOworCisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2YgdmlkZW9UcmFuc2NlaXZlci5taWQgPT0gJ3N0cmluZyci
KTsKKworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSkKKyAg
ICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJFcnJvciBjYXVnaHQgaW4gcHJvbWlzZSBjaGFpbjogIiArIGVycm9yKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAgICB3aW5kb3cuc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggYzFiYTdjOC4uYmVlODlhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTE5MCw2ICsxOTAsNyBAQCBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLW92ZXJsb2FkZWQtb3BlcmF0aW9ucy5odG1sCiBmYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLXJlcGxhY2VUcmFjay5odG1sCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25E
ZXNjcmlwdGlvbi5odG1sCitmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldExv
Y2FsRGVzY3JpcHRpb24tb2ZmZXIuaHRtbAogCiAjIEFzc2VydHMgaW4gZGVidWcuCiBbIERlYnVn
IF0gZmFzdC9pbWFnZXMvbGFyZ2Utc2l6ZS1pbWFnZS1jcmFzaC5odG1sIFsgU2tpcCBdCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGFjMTg4MTguLjYxYWI0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC05MTAsNiArOTEwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzUmVxdWVzdC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQ
ZWVyQ29ubmVjdGlvbi5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQ5ZDkxYjkuLmYzNDAxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNi0wNi0w
NyAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5jb20+CisKKyAgICAg
ICAgV2ViUlRDOiBJbWxlbWVudCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldExvY2Fs
RGVzY3JpcHRpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpz
ZXRMb2NhbERlc2NyaXB0aW9uLiBUaGlzIGZ1bmN0aW9uCisgICAgICAgIHBhcnNlcyB0aGUgaW5w
dXQgU0RQLCBjb25maWd1cmVzIHRoZSBtZWRpYSBiYWNrZW5kIGFuZCB1cGRhdGVzIHRoZQorICAg
ICAgICBSVENQZWVyQ29ubmVjdGlvbiBzdGF0ZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRz
IE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24gd2hpY2ggaXMgYW4gb2JqZWN0IHJlcHJl
c2VudGF0aW9uCisgICAgICAgIG9mIGFuIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiAod2hpY2ggY29u
dGFpbnMgYW4gU0RQIHN0cmluZykuCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLW9mZmVyLmh0bWwKKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICBBZGQgTWVkaWFFbmRwb2ludFNlc3Npb25EZXNj
cmlwdGlvbi4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNVbmFzc29jaWF0ZWRUcmFuc2Nl
aXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpj
cmVhdGVPZmZlclRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpzZXRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvblRhc2spOgorICAgICAgICBB
ZGQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OmxvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjpjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnBlbmRpbmdMb2NhbERlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6bG9j
YWxEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6aW50ZXJuYWxMb2NhbERlc2NyaXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OnRvUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246
OnR5cGVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNlc3Npb25EZXNj
cmlwdGlvbjo6aXNMYXRlclRoYW4pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246On5NZWRpYUVuZHBvaW50U2Vzc2lvbkRl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3Jp
cHRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFNlc3Npb25EZXNj
cmlwdGlvbjo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50
U2Vzc2lvbkRlc2NyaXB0aW9uOjpNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBN
ZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLgorCiAyMDE2LTA2LTA2ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjAxNzM1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4
IGJmOGFmMDIuLjdmOTRkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAK
QEAgLTMzLDkgKzMzLDExIEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAjaW5jbHVkZSAiTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludFNlc3Np
b25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgorI2luY2x1
ZGUgIlBlZXJNZWRpYURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiUlRDUnRwVHJhbnNjZWl2ZXIuaCIKICNpbmNsdWRlICJTRFBQcm9j
ZXNzb3IuaCIKQEAgLTExMiw2ICsxMTQsMTMgQEAgc3RhdGljIFJUQ1J0cFRyYW5zY2VpdmVyKiBt
YXRjaFRyYW5zY2VpdmVyQnlNaWQoY29uc3QgUnRwVHJhbnNjZWl2ZXJWZWN0b3ImIHRyYW4KICAg
ICB9KTsKIH0KIAorc3RhdGljIGJvb2wgaGFzVW5hc3NvY2lhdGVkVHJhbnNjZWl2ZXJzKGNvbnN0
IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0cmFuc2NlaXZlcnMpCit7CisgICAgcmV0dXJuIG1hdGNo
VHJhbnNjZWl2ZXIodHJhbnNjZWl2ZXJzLCBbXSAoUlRDUnRwVHJhbnNjZWl2ZXImIGN1cnJlbnQp
IHsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQubWlkKCkuaXNOdWxsKCkgJiYgIWN1cnJlbnQuc3Rv
cHBlZCgpOworICAgIH0pOworfQorCiB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6
cnVuVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaykKIHsKICAgICBpZiAo
bV9kdGxzRmluZ2VycHJpbnQuaXNOdWxsKCkpIHsKQEAgLTE0OCw3ICsxNTcsOSBAQCB2b2lkIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9u
cyYsIFNlc3Npb25EZXNjcgogICAgIGlmIChtX2NsaWVudC0+aW50ZXJuYWxTaWduYWxpbmdTdGF0
ZSgpID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25TbmFw
c2hvdCA9IE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAg
TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiogbG9jYWxEZXNjcmlwdGlvbiA9IGludGVy
bmFsTG9jYWxEZXNjcmlwdGlvbigpOworICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25TbmFwc2hvdCA9IGxvY2FsRGVzY3JpcHRpb24gPwor
ICAgICAgICBsb2NhbERlc2NyaXB0aW9uLT5jb25maWd1cmF0aW9uKCktPmNsb25lKCkgOiBNZWRp
YUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCiAgICAgY29uZmlndXJh
dGlvblNuYXBzaG90LT5zZXRTZXNzaW9uVmVyc2lvbihtX3NkcE9mZmVyU2Vzc2lvblZlcnNpb24r
Kyk7CiAKQEAgLTIyMCwzMiArMjMxLDEyMSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmIG9wdGlvbnMsIFNlc3NpbwogCiB2
b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvbihSVENT
ZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBWb2lkUHJvbWlzZSYmIHByb21pc2UpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0aW9uKTsKKyAgICBydW5UYXNrKFt0aGlzLCBwcm90
ZWN0ZWREZXNjcmlwdGlvbiA9IFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+KCZkZXNjcmlw
dGlvbiksIHByb3RlY3RlZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgewor
ICAgICAgICBzZXRMb2NhbERlc2NyaXB0aW9uVGFzayhXVEZNb3ZlKHByb3RlY3RlZERlc2NyaXB0
aW9uKSwgcHJvdGVjdGVkUHJvbWlzZSk7CisgICAgfSk7Cit9CiAKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldExvY2FsRGVzY3JpcHRp
b25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+JiYgZGVzY3JpcHRpb24sIFZvaWRQ
cm9taXNlJiBwcm9taXNlKQoreworICAgIGlmIChtX2NsaWVudC0+aW50ZXJuYWxTaWduYWxpbmdT
dGF0ZSgpID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVybjsKIAotICAg
IHByb21pc2UucmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICBFeGNlcHRpb25Db2RlV2l0
aE1lc3NhZ2UgZXhjZXB0aW9uOworICAgIGF1dG8gbmV3RGVzY3JpcHRpb24gPSBNZWRpYUVuZHBv
aW50U2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoV1RGTW92ZShkZXNjcmlwdGlvbiksICptX3Nk
cFByb2Nlc3NvciwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uLmNvZGUpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoZXhjZXB0aW9uLmNvZGUsIGV4Y2VwdGlvbi5tZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbG9jYWxEZXNjcmlwdGlvblR5cGVWYWxp
ZEZvclN0YXRlKG5ld0Rlc2NyaXB0aW9uLT50eXBlKCkpKSB7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KElOVkFMSURfU1RBVEVfRVJSLCAiRGVzY3JpcHRpb24gdHlwZSBpbmNvbXBhdGlibGUgd2l0
aCBjdXJyZW50IHNpZ25hbGluZyBzdGF0ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgY29uc3QgUnRwVHJhbnNjZWl2ZXJWZWN0b3ImIHRyYW5zY2VpdmVycyA9IG1fY2xpZW50LT5n
ZXRUcmFuc2NlaXZlcnMoKTsKKyAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9yJiBtZWRp
YURlc2NyaXB0aW9ucyA9IG5ld0Rlc2NyaXB0aW9uLT5jb25maWd1cmF0aW9uKCktPm1lZGlhRGVz
Y3JpcHRpb25zKCk7CisgICAgTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiogbG9jYWxE
ZXNjcmlwdGlvbiA9IGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigpOworICAgIHVuc2lnbmVkIHBy
ZXZpb3VzTnVtYmVyT2ZNZWRpYURlc2NyaXB0aW9ucyA9IGxvY2FsRGVzY3JpcHRpb24gPyBsb2Nh
bERlc2NyaXB0aW9uLT5jb25maWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCkuc2l6ZSgp
IDogMDsKKyAgICBib29sIGhhc05ld01lZGlhRGVzY3JpcHRpb25zID0gbWVkaWFEZXNjcmlwdGlv
bnMuc2l6ZSgpID4gcHJldmlvdXNOdW1iZXJPZk1lZGlhRGVzY3JpcHRpb25zOworICAgIGJvb2wg
aXNJbml0aWF0b3IgPSBuZXdEZXNjcmlwdGlvbi0+dHlwZSgpID09IFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbjo6U2RwVHlwZTo6T2ZmZXI7CisKKyAgICBpZiAoaGFzTmV3TWVkaWFEZXNjcmlwdGlvbnMp
IHsKKyAgICAgICAgTWVkaWFFbmRwb2ludDo6VXBkYXRlUmVzdWx0IHJlc3VsdCA9IG1fbWVkaWFF
bmRwb2ludC0+dXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24obmV3RGVzY3JpcHRpb24tPmNvbmZp
Z3VyYXRpb24oKSwgaXNJbml0aWF0b3IpOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gTWVkaWFF
bmRwb2ludDo6VXBkYXRlUmVzdWx0OjpTdWNjZXNzV2l0aEljZVJlc3RhcnQpIHsKKyAgICAgICAg
ICAgIGlmIChtX2NsaWVudC0+aW50ZXJuYWxJY2VHYXRoZXJpbmdTdGF0ZSgpICE9IEljZUdhdGhl
cmluZ1N0YXRlOjpHYXRoZXJpbmcpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUlj
ZUdhdGhlcmluZ1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpHYXRoZXJpbmcpOworCisgICAgICAg
ICAgICBpZiAobV9jbGllbnQtPmludGVybmFsSWNlQ29ubmVjdGlvblN0YXRlKCkgIT0gSWNlQ29u
bmVjdGlvblN0YXRlOjpDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUljZUNvbm5lY3Rpb25TdGF0ZShJY2VDb25uZWN0aW9uU3RhdGU6OkNvbm5lY3RlZCk7CisKKyAg
ICAgICAgICAgIExPR19FUlJPUigiSUNFIHJlc3RhcnQgaXMgbm90IGltcGxlbWVudGVkIik7Cisg
ICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
ID09IE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdDo6RmFpbGVkKSB7CisgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChPcGVyYXRpb25FcnJvciwgIlVuYWJsZSB0byBhcHBseSBzZXNzaW9uIGRl
c2NyaXB0aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBBc3NvY2lhdGUgbWVkaWEgZGVzY3JpcHRpb25zIHdpdGggdHJhbnNjZWl2ZXJzIChzZXQgcHJv
dmlzaW9uYWwgbWlkIHRvICdmaW5hbCcgbWlkKS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
cHJldmlvdXNOdW1iZXJPZk1lZGlhRGVzY3JpcHRpb25zOyBpIDwgbWVkaWFEZXNjcmlwdGlvbnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uJiBtZWRpYURl
c2NyaXB0aW9uID0gKm1lZGlhRGVzY3JpcHRpb25zW2ldOworCisgICAgICAgICAgICBSVENSdHBU
cmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVycywg
WyZtZWRpYURlc2NyaXB0aW9uXSAoUlRDUnRwVHJhbnNjZWl2ZXImIGN1cnJlbnQpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY3VycmVudC5wcm92aXNpb25hbE1pZCgpID09IG1lZGlhRGVzY3Jp
cHRpb24ubWlkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICh0cmFuc2NlaXZl
cikKKyAgICAgICAgICAgICAgICB0cmFuc2NlaXZlci0+c2V0TWlkKHRyYW5zY2VpdmVyLT5wcm92
aXNpb25hbE1pZCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaGFzVW5hc3NvY2lh
dGVkVHJhbnNjZWl2ZXJzKHRyYW5zY2VpdmVycykpCisgICAgICAgIGNsZWFyTmVnb3RpYXRpb25O
ZWVkZWRTdGF0ZSgpOworCisgICAgU2lnbmFsaW5nU3RhdGUgbmV3U2lnbmFsaW5nU3RhdGU7CisK
KyAgICAvLyBVcGRhdGUgc3RhdGUgYW5kIGxvY2FsIGRlc2NyaXB0aW9ucyBhY2NvcmRpbmcgdG8g
c2V0TG9jYWwvUmVtb3RlRGVzY3JpcHRpb24gcHJvY2Vzc2luZyBtb2RlbAorICAgIHN3aXRjaCAo
bmV3RGVzY3JpcHRpb24tPnR5cGUoKSkgeworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
OjpTZHBUeXBlOjpPZmZlcjoKKyAgICAgICAgbV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiA9IG5l
d0Rlc2NyaXB0aW9uOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRl
OjpIYXZlTG9jYWxPZmZlcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6U2RwVHlwZTo6QW5zd2VyOgorICAgICAgICBtX2N1cnJlbnRMb2NhbERlc2Ny
aXB0aW9uID0gbmV3RGVzY3JpcHRpb247CisgICAgICAgIG1fcGVuZGluZ0xvY2FsRGVzY3JpcHRp
b24gPSBudWxscHRyOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRl
OjpTdGFibGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRp
b246OlNkcFR5cGU6OlJvbGxiYWNrOgorICAgICAgICBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9u
ID0gbnVsbHB0cjsKKyAgICAgICAgbmV3U2lnbmFsaW5nU3RhdGUgPSBTaWduYWxpbmdTdGF0ZTo6
U3RhYmxlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
OjpTZHBUeXBlOjpQcmFuc3dlcjoKKyAgICAgICAgbV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiA9
IG5ld0Rlc2NyaXB0aW9uOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0
YXRlOjpIYXZlTG9jYWxQckFuc3dlcjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg
KG5ld1NpZ25hbGluZ1N0YXRlICE9IG1fY2xpZW50LT5pbnRlcm5hbFNpZ25hbGluZ1N0YXRlKCkp
IHsKKyAgICAgICAgbV9jbGllbnQtPnNldFNpZ25hbGluZ1N0YXRlKG5ld1NpZ25hbGluZ1N0YXRl
KTsKKyAgICAgICAgbV9jbGllbnQtPmZpcmVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5zaWduYWxpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICB9CisKKyAg
ICBpZiAobV9jbGllbnQtPmludGVybmFsSWNlR2F0aGVyaW5nU3RhdGUoKSA9PSBJY2VHYXRoZXJp
bmdTdGF0ZTo6TmV3ICYmIG1lZGlhRGVzY3JpcHRpb25zLnNpemUoKSkKKyAgICAgICAgbV9jbGll
bnQtPnVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpHYXRoZXJpbmcp
OworCisgICAgaWYgKG1fY2xpZW50LT5pbnRlcm5hbFNpZ25hbGluZ1N0YXRlKCkgPT0gU2lnbmFs
aW5nU3RhdGU6OlN0YWJsZSAmJiBtX25lZ290aWF0aW9uTmVlZGVkKQorICAgICAgICBtX2NsaWVu
dC0+c2NoZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50KCk7CisKKyAgICBwcm9taXNlLnJlc29s
dmUobnVsbHB0cik7CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6bG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVS
VENTZXNzaW9uRGVzY3JpcHRpb24oaW50ZXJuYWxMb2NhbERlc2NyaXB0aW9uKCkpOwogfQogCiBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZVJUQ1Nlc3Npb25EZXNj
cmlwdGlvbihtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uLmdldCgpKTsKIH0KIAogUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpwZW5kaW5n
TG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLQotICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVSVENTZXNzaW9uRGVzY3JpcHRpb24o
bV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbi5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBWb2lkUHJvbWlzZSYmIHByb21pc2UpCkBAIC0zMzQsNiArNDM0LDM1
IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjptYXJrQXNOZWVkaW5nTmVnb3Rp
YXRpb24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjpsb2NhbERlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2NsaWVu
dC0+aW50ZXJuYWxTaWduYWxpbmdTdGF0ZSgpKSB7CisgICAgY2FzZSBTaWduYWxpbmdTdGF0ZTo6
U3RhYmxlOgorICAgICAgICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNk
cFR5cGU6Ok9mZmVyOworICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9mZmVyOgor
ICAgICAgICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9m
ZmVyOworICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVPZmZlcjoKKyAgICAgICAg
cmV0dXJuIHR5cGUgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXIgfHwg
dHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OlByYW5zd2VyOworICAgIGNh
c2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbFByQW5zd2VyOgorICAgICAgICByZXR1cm4gdHlw
ZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dlciB8fCB0eXBlID09IFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6UHJhbnN3ZXI7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24q
IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6aW50ZXJuYWxMb2NhbERlc2NyaXB0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbiA/IG1fcGVuZGlu
Z0xvY2FsRGVzY3JpcHRpb24uZ2V0KCkgOiBtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uLmdldCgp
OworfQorCitSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OmNyZWF0ZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lv
bkRlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gZGVzY3JpcHRp
b24gPyBkZXNjcmlwdGlvbi0+dG9SVENTZXNzaW9uRGVzY3JpcHRpb24oKm1fc2RwUHJvY2Vzc29y
KSA6IG51bGxwdHI7Cit9CisKIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnb3RE
dGxzRmluZ2VycHJpbnQoY29uc3QgU3RyaW5nJiBmaW5nZXJwcmludCwgY29uc3QgU3RyaW5nJiBm
aW5nZXJwcmludEZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQ
ZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAppbmRleCBmNjlhMjNlLi5lY2IyOTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LCAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwxNyArMzQsMTkgQEAKICNpZiBFTkFC
TEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnQuaCIKKyNpbmNsdWRlICJNZWRp
YUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKLSNpbmNsdWRlICJSVENTZXNz
aW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
ZWRpYVN0cmVhbVRyYWNrOworY2xhc3MgUGVlck1lZGlhRGVzY3JpcHRpb247CiBjbGFzcyBTRFBQ
cm9jZXNzb3I7CiAKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxQZWVyTWVkaWFEZXNjcmlwdGlvbj4+
IE1lZGlhRGVzY3JpcHRpb25WZWN0b3I7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2Vu
ZGVyPj4gUnRwU2VuZGVyVmVjdG9yOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRyYW5z
Y2VpdmVyPj4gUnRwVHJhbnNjZWl2ZXJWZWN0b3I7CiAKQEAgLTg1LDYgKzg3LDEzIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBQZWVyQ29u
bmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYpOwogCisgICAgdm9pZCBzZXRMb2Nh
bERlc2NyaXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiYmLCBQZWVyQ29u
bmVjdGlvbjo6Vm9pZFByb21pc2UmKTsKKworICAgIGJvb2wgbG9jYWxEZXNjcmlwdGlvblR5cGVW
YWxpZEZvclN0YXRlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZSkgY29uc3Q7CisKKyAg
ICBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uKiBpbnRlcm5hbExvY2FsRGVzY3JpcHRp
b24oKSBjb25zdDsKKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjcmVhdGVSVENT
ZXNzaW9uRGVzY3JpcHRpb24oTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiopIGNvbnN0
OworCiAgICAgLy8gTWVkaWFFbmRwb2ludENsaWVudAogICAgIHZvaWQgZ290RHRsc0ZpbmdlcnBy
aW50KGNvbnN0IFN0cmluZyYgZmluZ2VycHJpbnQsIGNvbnN0IFN0cmluZyYgZmluZ2VycHJpbnRG
dW5jdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnb3RJY2VDYW5kaWRhdGUodW5zaWduZWQgbWRl
c2NJbmRleCwgUmVmUHRyPEljZUNhbmRpZGF0ZT4mJikgb3ZlcnJpZGU7CkBAIC0xMDcsNiArMTE2
LDExIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZHRsc0ZpbmdlcnByaW50OwogICAgIFN0cmlu
ZyBtX2R0bHNGaW5nZXJwcmludEZ1bmN0aW9uOwogICAgIHVuc2lnbmVkIG1fc2RwT2ZmZXJTZXNz
aW9uVmVyc2lvbiB7IDAgfTsKKworICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2Ny
aXB0aW9uPiBtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uOworICAgIFJlZlB0cjxNZWRpYUVuZHBv
aW50U2Vzc2lvbkRlc2NyaXB0aW9uPiBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uOworCisgICAg
Ym9vbCBtX25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwOTVkN2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1LCAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlNEUFByb2Nlc3Nvci5oIgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZp
bmUgU1RSSU5HX0ZVTkNUSU9OKG5hbWUpIFwKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBuYW1l
IyNTdHJpbmcoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IG5hbWUgeyBBU0NJSUxpdGVyYWwoI25hbWUpIH07IFwKKyAgICAgICAgcmV0dXJu
IG5hbWU7IFwKKyAgICB9CisKK1NUUklOR19GVU5DVElPTihvZmZlcikKK1NUUklOR19GVU5DVElP
TihwcmFuc3dlcikKK1NUUklOR19GVU5DVElPTihhbnN3ZXIpCitTVFJJTkdfRlVOQ1RJT04ocm9s
bGJhY2spCisKK1JlZjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBv
aW50U2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBU
eXBlIHR5cGUsIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+JiYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUVuZHBvaW50U2Vz
c2lvbkRlc2NyaXB0aW9uKHR5cGUsIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG51bGxwdHIpKTsK
K30KKworUmVmUHRyPE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9p
bnRTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9u
PiYmIHJ0Y0Rlc2NyaXB0aW9uLCBjb25zdCBTRFBQcm9jZXNzb3ImIHNkcFByb2Nlc3NvciwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBleGNlcHRpb24pCit7CisgICAgUmVmUHRyPE1lZGlhRW5k
cG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbjsKKyAgICBTRFBQcm9jZXNz
b3I6OlJlc3VsdCByZXN1bHQgPSBzZHBQcm9jZXNzb3IucGFyc2UocnRjRGVzY3JpcHRpb24tPnNk
cCgpLCBjb25maWd1cmF0aW9uKTsKKyAgICBpZiAocmVzdWx0ICE9IFNEUFByb2Nlc3Nvcjo6UmVz
dWx0OjpTdWNjZXNzKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU0RQUHJvY2Vzc29yOjpSZXN1
bHQ6OlBhcnNlRXJyb3IpIHsKKyAgICAgICAgICAgIGV4Y2VwdGlvbi5jb2RlID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOworICAgICAgICAgICAgZXhjZXB0aW9uLm1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
IlNEUCBjb250ZW50IGlzIGludmFsaWQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisgICAgICAgIExPR19FUlJPUigiU0RQUHJvY2Vzc29yIGludGVybmFsIGVycm9y
Iik7CisgICAgICAgIGV4Y2VwdGlvbi5jb2RlID0gQUJPUlRfRVJSOworICAgICAgICBleGNlcHRp
b24ubWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUVuZHBv
aW50U2Vzc2lvbkRlc2NyaXB0aW9uKHJ0Y0Rlc2NyaXB0aW9uLT50eXBlKCksIFdURk1vdmUoY29u
ZmlndXJhdGlvbiksIFdURk1vdmUocnRjRGVzY3JpcHRpb24pKSk7Cit9CisKK1JlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OnRvUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uKGNvbnN0IFNEUFByb2Nlc3NvciYgc2RwUHJvY2Vzc29yKSBjb25z
dAoreworICAgIFN0cmluZyBzZHBTdHJpbmc7CisgICAgU0RQUHJvY2Vzc29yOjpSZXN1bHQgcmVz
dWx0ID0gc2RwUHJvY2Vzc29yLmdlbmVyYXRlKCptX2NvbmZpZ3VyYXRpb24sIHNkcFN0cmluZyk7
CisgICAgaWYgKHJlc3VsdCAhPSBTRFBQcm9jZXNzb3I6OlJlc3VsdDo6U3VjY2VzcykgeworICAg
ICAgICBMT0dfRVJST1IoIlNEUFByb2Nlc3NvciBpbnRlcm5hbCBlcnJvciIpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBJZiB0aGlzIG9iamVjdCB3YXMgY3JlYXRl
ZCBmcm9tIGFuIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiwgdG9SVENTZXNzaW9uRGVzY3JpcHRpb24g
d2lsbCByZXR1cm4KKyAgICAvLyB0aGF0IHNhbWUgaW5zdGFuY2UgYnV0IHdpdGggYW4gdXBkYXRl
ZCBzZHAuIEl0IGlzIHVzZWQgZm9yIFJUQ1BlZXJDb25uZWN0aW9uJ3MgZGVzY3JpcHRpb24KKyAg
ICAvLyBhdHJpYnV0ZXMgKGUuZy4gbG9jYWxEZXNjcmlwdGlvbiBhbmQgcGVuZGluZ0xvY2FsRGVz
Y3JpcHRpb24pLgorICAgIGlmIChtX3J0Y0Rlc2NyaXB0aW9uKSB7CisgICAgICAgIG1fcnRjRGVz
Y3JpcHRpb24tPnNldFNkcChzZHBTdHJpbmcpOworICAgICAgICByZXR1cm4gbV9ydGNEZXNjcmlw
dGlvbjsKKyAgICB9CisKKyAgICByZXR1cm4gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUo
bV90eXBlLCBzZHBTdHJpbmcpOworfQorCitjb25zdCBTdHJpbmcmIE1lZGlhRW5kcG9pbnRTZXNz
aW9uRGVzY3JpcHRpb246OnR5cGVTdHJpbmcoKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBl
KSB7CisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9mZmVyOgorICAg
ICAgICByZXR1cm4gb2ZmZXJTdHJpbmcoKTsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bjo6U2RwVHlwZTo6UHJhbnN3ZXI6CisgICAgICAgIHJldHVybiBwcmFuc3dlclN0cmluZygpOwor
ICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXI6CisgICAgICAg
IHJldHVybiBhbnN3ZXJTdHJpbmcoKTsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6
U2RwVHlwZTo6Um9sbGJhY2s6CisgICAgICAgIHJldHVybiByb2xsYmFja1N0cmluZygpOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworfQorCitib29sIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OmlzTGF0ZXJUaGFu
KE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24qIG90aGVyKSBjb25zdAoreworICAgIHJl
dHVybiAhb3RoZXIgfHwgY29uZmlndXJhdGlvbigpLT5zZXNzaW9uVmVyc2lvbigpID4gb3RoZXIt
PmNvbmZpZ3VyYXRpb24oKS0+c2Vzc2lvblZlcnNpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNl
c3Npb25EZXNjcmlwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVj
YWEyYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAg
ICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVy
aWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAg
ICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbl9oCisjZGVm
aW5lIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb25faAorCisjaWYgRU5BQkxFKFdFQl9S
VEMpCisKKyNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb247CitjbGFzcyBT
RFBQcm9jZXNzb3I7CitjbGFzcyBET01FcnJvcjsKKworY2xhc3MgTWVkaWFFbmRwb2ludFNlc3Np
b25EZXNjcmlwdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVz
Y3JpcHRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24+IGNyZWF0ZShSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGUsIFJlZlB0
cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbj4gY3JlYXRlKFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+JiYsIGNvbnN0IFNEUFByb2Nlc3NvciYsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpOworICAgIHZpcnR1YWwgfk1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24o
KSB7IH0KKworICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHRvUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uKGNvbnN0IFNEUFByb2Nlc3NvciYpIGNvbnN0OworCisgICAgUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHR5cGVTdHJpbmcoKSBjb25zdDsKKyAgICBNZWRpYUVuZHBvaW50U2Vzc2lv
bkNvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24uZ2V0KCk7IH0KKworICAgIGJvb2wgaXNMYXRlclRoYW4oTWVkaWFFbmRwb2ludFNlc3Np
b25EZXNjcmlwdGlvbiogb3RoZXIpIGNvbnN0OworCitwcml2YXRlOgorICAgIE1lZGlhRW5kcG9p
bnRTZXNzaW9uRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUs
IFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlv
biwgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4mJiBydGNEZXNjcmlwdGlvbikKKyAgICAg
ICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlv
bikKKyAgICAgICAgLCBtX3J0Y0Rlc2NyaXB0aW9uKFdURk1vdmUocnRjRGVzY3JpcHRpb24pKQor
ICAgIHsgfQorCisgICAgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIG1fdHlwZTsKKyAg
ICBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRp
b247CisKKyAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBtX3J0Y0Rlc2NyaXB0aW9u
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9S
VEMpCisKKyNlbmRpZiAvLyBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
YzBmM2E4Li43M2E0NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzg2LDYgKzIzODYsOCBAQAogCQk1RTJDNDM3NDFCQ0Yw
RDc1MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFMkM0MzcwMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0
cFNlbmRlci5oICovOyB9OwogCQk1RTJDNDM3QjFCQ0Y5QTU3MDAwMUUyQkMgLyogUlRDUGVlckNv
bm5lY3Rpb25CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1RTJDNDM3QzFCQ0Y5QTg0MDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1RTRFQUIwNDFEMDcxNjZBMDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlw
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0
RUFCMDMxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24u
aCAqLzsgfTsKKwkJNUU0RUFCMDUxRDA3MTY2RTAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNz
aW9uRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUU0RUFCMDIxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9u
RGVzY3JpcHRpb24uY3BwICovOyB9OwogCQk1RTVFMkIxMzFDRkMzRTcwMDAwQzBEODUgLyogUlRD
UnRwVHJhbnNjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUU1RTJCMTAxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNw
cCAqLzsgfTsKIAkJNUU1RTJCMTQxQ0ZDM0U3NTAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTVFMkIx
MTFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RUEzRDZERjFDODU5RDdGMDAzMDBC
QkIgLyogTW9ja01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVFQTNENkRFMUM4NTlENTMwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRw
b2ludC5oICovOyB9OwpAQCAtOTk5NCw2ICs5OTk2LDggQEAKIAkJNUUyQzQzNzYxQkNGOUEwQjAw
MDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RTJDNDM3ODFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVlckNvbm5l
Y3Rpb25JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSVENQZWVyQ29ubmVjdGlvbkludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJD
b25uZWN0aW9uSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1RTRFQUIwMjFEMDcxNjRDMDAwNkExODQgLyogTWVkaWFFbmRwb2lu
dFNlc3Npb25EZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUU0RUFCMDMxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTVFMkIxMTFDRkMzRTRCMDAwQzBEODUg
LyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUnRwVHJhbnNjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUU1RTJC
MTIxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTQwNSw2ICsxNTQwOSw4IEBACiAJCQkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNE
IC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuaCAqLywKIAkJCQk1RTE2QTJFMjFCRkE2NEZCMDAyOUEy
MUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1RTE2QTJFMzFC
RkE2NEZCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggKi8sCisJCQkJ
NUU0RUFCMDIxRDA3MTY0QzAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRp
b24uY3BwICovLAorCQkJCTVFNEVBQjAzMUQwNzE2NEMwMDA2QTE4NCAvKiBNZWRpYUVuZHBvaW50
U2Vzc2lvbkRlc2NyaXB0aW9uLmggKi8sCiAJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8q
IE1lZGlhU291cmNlU2V0dGluZ3MuY3BwICovLAogCQkJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmggKi8sCiAJCQkJMDcyMjFCNEMxN0NFQzMyNzAwODQ4
RTUxIC8qIE1lZGlhU3RyZWFtLmNwcCAqLywKQEAgLTI3MDc0LDYgKzI3MDgwLDcgQEAKIAkJCQlF
MUMzNkQzNTBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQzM2MkVGMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI3MUE1ODBFRUVDREU0MDBGNjEyMTMgLyogSlNX
b3JrZXJOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTVFNEVBQjA0MUQwNzE2NkEwMDA2
QTE4NCAvKiBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODM1OENCNzAxQzUzMjc3NTAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0
dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNjMwLDYgKzMxNjM3LDcgQEAKIAkJCQlF
NEQ1OEVCODE3QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VGNDQ3RDBFNjc0ODA2MDAxQzEyODcgLyogU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEg
LyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1RTRFQUIwNTFEMDcxNjZF
MDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTEwREI5RDE0RjVERjg3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMjczMDMwRTgyRjFFNjAwRTdGOTc1IC8qIFN0eWxl
SW5oZXJpdGVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDcxMjdDQTE2MzQzOEExMDBF
RDZGNUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>