<?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>130313</bug_id>
          
          <creation_ts>2014-03-16 14:08:58 -0700</creation_ts>
          <short_desc>Use RunLoop objects through references instead of pointers</short_desc>
          <delta_ts>2014-03-17 11:48:36 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991031</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-16 14:08:58 -0700</bug_when>
    <thetext>Use RunLoop objects through references instead of pointers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991032</commentid>
    <comment_count>1</comment_count>
      <attachid>226859</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-16 14:10:05 -0700</bug_when>
    <thetext>Created attachment 226859
WIP

Running through EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991033</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2014-03-16 14:13:01 -0700</bug_when>
    <thetext>Attachment 226859 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991037</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-16 14:28:57 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Source/WTF/wtf/cf/RunLoopCF.cpp:68:14: error: member reference type &apos;WTF::RunLoop&apos; is not a pointer
    current()-&gt;m_nestingLevel++;
    ~~~~~~~~~^
/Volumes/Data/EWS/WebKit/Source/WTF/wtf/cf/RunLoopCF.cpp:75:14: error: member reference type &apos;WTF::RunLoop&apos; is not a pointer
    current()-&gt;m_nestingLevel--;
    ~~~~~~~~~^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991045</commentid>
    <comment_count>4</comment_count>
      <attachid>226863</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-16 15:16:34 -0700</bug_when>
    <thetext>Created attachment 226863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991049</commentid>
    <comment_count>5</comment_count>
      <attachid>226863</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-03-16 15:57:58 -0700</bug_when>
    <thetext>Comment on attachment 226863
Patch

/Volumes/Data/EWS/WebKit/Source/WebKit2/Platform/IPC/mac/ConnectionMac.cpp:447:28: error: member reference type &apos;WTF::RunLoop&apos; is not a pointer
            m_clientRunLoop-&gt;dispatch(bind(&amp;Connection::dispatchDidReceiveInvalidMessage, this, decoder-&gt;messageReceiverName().toString(), decoder-&gt;messageName().toString()));
            ~~~~~~~~~~~~~~~^

r=me once you get it to build :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991207</commentid>
    <comment_count>6</comment_count>
      <attachid>226914</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-17 07:40:58 -0700</bug_when>
    <thetext>Created attachment 226914
Patch for landing

Landing candidate if the EWSs process it successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991324</commentid>
    <comment_count>7</comment_count>
      <attachid>226914</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-17 11:48:06 -0700</bug_when>
    <thetext>Comment on attachment 226914
Patch for landing

Clearing flags on attachment: 226914

Committed r165746: &lt;http://trac.webkit.org/changeset/165746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991325</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-17 11:48:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226859</attachid>
            <date>2014-03-16 14:10:05 -0700</date>
            <delta_ts>2014-03-16 15:16:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-130313-20140316140941.patch</filename>
            <type>text/plain</type>
            <size>41061</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjU3MTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTAzLTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgUnVuTG9vcCBvYmplY3RzIHRocm91Z2gg
cmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9SdW5Mb29wLmNwcDoKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6SG9sZGVyOjpIb2xkZXIpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpIb2xkZXI6
OnJ1bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ap
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpjdXJyZW50KToKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6bWFpbik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmlzTWFpbik6CisgICAgICAgICogd3Rm
L1J1bkxvb3AuaDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXI6OlRpbWVyKToKKyAgICAg
ICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKyAgICAgICAgKiB3dGYvZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgICogd3RmL2d0ay9SdW5Mb29wR3Rr
LmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJh
c2U6OnN0YXJ0KToKKyAgICAgICAgKiB3dGYvd2luL1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6
OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKwog
MjAxNC0wMy0xNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZvbGxvdy11cDogRml4IHVuZGVmaW5lZCBiZWhhdmlvciBpbiBXVEY6OmVxdWFsKCkgaW4gU3Ry
aW5nSW1wbC5oIGZvciBpMzg2L3g4Nl82NApJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAJKHJldmlzaW9uIDE2
NTcwOCkKKysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NywzOSArMzcsMzkgQEAgc3RhdGljIFJ1bkxvb3AqIHNfbWFpblJ1bkxvb3A7CiBjbGFzcyBSdW5M
b29wOjpIb2xkZXIgewogcHVibGljOgogICAgIEhvbGRlcigpCi0gICAgICAgIDogbV9ydW5Mb29w
KGFkb3B0UmVmKG5ldyBSdW5Mb29wKSkKKyAgICAgICAgOiBtX3J1bkxvb3AoYWRvcHRSZWYoKm5l
dyBSdW5Mb29wKSkKICAgICB7CiAgICAgfQogCi0gICAgUnVuTG9vcCogcnVuTG9vcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJl
dHVybiBtX3J1bkxvb3AuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UnVuTG9vcD4g
bV9ydW5Mb29wOworICAgIFJlZjxSdW5Mb29wPiBtX3J1bkxvb3A7CiB9OwogCiB2b2lkIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpCiB7CiAgICAgaWYgKHNfbWFpblJ1bkxvb3ApCiAg
ICAgICAgIHJldHVybjsKLSAgICBzX21haW5SdW5Mb29wID0gUnVuTG9vcDo6Y3VycmVudCgpOwor
ICAgIHNfbWFpblJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwogfQogCi1SdW5Mb29wKiBS
dW5Mb29wOjpjdXJyZW50KCkKK1J1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQoKQogewogICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNpZmljPFJ1bkxvb3A6
OkhvbGRlcj4sIHJ1bkxvb3BIb2xkZXIsICgpKTsKICAgICByZXR1cm4gcnVuTG9vcEhvbGRlci0+
cnVuTG9vcCgpOwogfQogCi1SdW5Mb29wKiBSdW5Mb29wOjptYWluKCkKK1J1bkxvb3AmIFJ1bkxv
b3A6Om1haW4oKQogewogICAgIEFTU0VSVChzX21haW5SdW5Mb29wKTsKLSAgICByZXR1cm4gc19t
YWluUnVuTG9vcDsKKyAgICByZXR1cm4gKnNfbWFpblJ1bkxvb3A7CiB9CiAKIGJvb2wgUnVuTG9v
cDo6aXNNYWluKCkKIHsKICAgICBBU1NFUlQoc19tYWluUnVuTG9vcCk7Ci0gICAgcmV0dXJuIHNf
bWFpblJ1bkxvb3AgPT0gUnVuTG9vcDo6Y3VycmVudCgpOworICAgIHJldHVybiBzX21haW5SdW5M
b29wID09ICZSdW5Mb29wOjpjdXJyZW50KCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdv
cmsoKQpJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1J1bkxvb3AuaAkocmV2aXNpb24gMTY1NzA4KQorKysgU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMTQgQEAKIG5hbWVzcGFjZSBX
VEYgewogCiBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcCk7CiBwdWJsaWM6CiAgICAgLy8gTXVzdCBiZSBj
YWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGV4Y2VwdCBmb3IgdGhlIE1hYyBwbGF0Zm9ybSwg
d2hlcmUgaXQKICAgICAvLyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCkuCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSdW5Mb29wKiBjdXJyZW50KCk7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSdW5Mb29wKiBtYWluKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSdW5Mb29wJiBjdXJyZW50KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSdW5Mb29wJiBtYWluKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGlzTWFpbigpOwogICAgIH5SdW5Mb29wKCk7CiAKQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFRpbWVyQmFz
ZShSdW5Mb29wKik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBUaW1lckJh
c2UoUnVuTG9vcCYpOwogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+VGltZXJC
YXNlKCk7CiAKICAgICAgICAgdm9pZCBzdGFydFJlcGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2
YWwpIHsgc3RhcnQocmVwZWF0SW50ZXJ2YWwsIHRydWUpOyB9CkBAIC04NCw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFy
dChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpOwogCi0gICAgICAgIFJ1bkxv
b3AqIG1fcnVuTG9vcDsKKyAgICAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKFJ1bkxvb3AqLCB1aW50NjRf
dCBJRCk7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiB2b2lkIChUaW1lckZpcmVkQ2xhc3M6OipUaW1lckZpcmVkRnVuY3Rpb24pKCk7CiAK
LSAgICAgICAgVGltZXIoUnVuTG9vcCogcnVuTG9vcCwgVGltZXJGaXJlZENsYXNzKiBvLCBUaW1l
ckZpcmVkRnVuY3Rpb24gZikKKyAgICAgICAgVGltZXIoUnVuTG9vcCYgcnVuTG9vcCwgVGltZXJG
aXJlZENsYXNzKiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKICAgICAgICAgICAgIDogVGltZXJC
YXNlKHJ1bkxvb3ApCiAgICAgICAgICAgICAsIG1fb2JqZWN0KG8pCiAgICAgICAgICAgICAsIG1f
ZnVuY3Rpb24oZikKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMTY1NzA4
KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNyArOTEsNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZChDRlJ1CiAg
ICAgdGltZXItPmZpcmVkKCk7CiB9CiAKLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1
bkxvb3AqIHJ1bkxvb3ApCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBy
dW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiB7CiB9CkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBuZQogICAgIENGUnVuTG9v
cFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07CiAgICAgQ0ZUaW1l
SW50ZXJ2YWwgcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBuZXh0RmlyZUludGVydmFsIDogMDsK
ICAgICBtX3RpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwsIHJl
cGVhdEludGVydmFsLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOwotICAgIENGUnVuTG9v
cEFkZFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKG1fcnVuTG9vcC5tX3J1
bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAK
IHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2Vm
bC9SdW5Mb29wRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9lZmwvUnVuTG9v
cEVmbC5jcHAJKHJldmlzaW9uIDE2NTcwOCkKKysrIFNvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29w
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsOCArODMsOSBAQCB2b2lkIFJ1bkxvb3A6Ondh
a2VVcCgpCiAgICAgfQogfQogCi1SdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29w
KikKLSAgICA6IG1fdGltZXIoMCkKK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxv
b3AmIHJ1bkxvb3ApCisgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKKyAgICAsIG1fdGltZXIoMCkK
ICAgICAsIG1faXNSZXBlYXRpbmcoZmFsc2UpCiB7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9n
dGsvUnVuTG9vcEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZ3RrL1J1bkxv
b3BHdGsuY3BwCShyZXZpc2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9ndGsvUnVuTG9v
cEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDggQEAgUnVuTG9vcDo6flJ1bkxv
b3AoKQogCiB2b2lkIFJ1bkxvb3A6OnJ1bigpCiB7Ci0gICAgUnVuTG9vcCogbWFpblJ1bkxvb3Ag
PSBSdW5Mb29wOjpjdXJyZW50KCk7Ci0gICAgR01haW5Mb29wKiBpbm5lcm1vc3RMb29wID0gbWFp
blJ1bkxvb3AtPmlubmVybW9zdExvb3AoKTsKKyAgICBSdW5Mb29wJiBtYWluUnVuTG9vcCA9IFJ1
bkxvb3A6OmN1cnJlbnQoKTsKKyAgICBHTWFpbkxvb3AqIGlubmVybW9zdExvb3AgPSBtYWluUnVu
TG9vcC5pbm5lcm1vc3RMb29wKCk7CiAgICAgaWYgKCFnX21haW5fbG9vcF9pc19ydW5uaW5nKGlu
bmVybW9zdExvb3ApKSB7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihpbm5lcm1vc3RMb29wKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNjIsOSArNjIsOSBAQCB2b2lkIFJ1bkxvb3A6OnJ1bigpCiAK
ICAgICAvLyBDcmVhdGUgYW5kIHJ1biBhIG5lc3RlZCBsb29wIGlmIHRoZSBpbm5lcm1vc3Qgb25l
IHdhcyBhbHJlYWR5IHJ1bm5pbmcuCiAgICAgR01haW5Mb29wKiBuZXN0ZWRNYWluTG9vcCA9IGdf
bWFpbl9sb29wX25ldygwLCBGQUxTRSk7Ci0gICAgbWFpblJ1bkxvb3AtPnB1c2hOZXN0ZWRNYWlu
TG9vcChuZXN0ZWRNYWluTG9vcCk7CisgICAgbWFpblJ1bkxvb3AucHVzaE5lc3RlZE1haW5Mb29w
KG5lc3RlZE1haW5Mb29wKTsKICAgICBnX21haW5fbG9vcF9ydW4obmVzdGVkTWFpbkxvb3ApOwot
ICAgIG1haW5SdW5Mb29wLT5wb3BOZXN0ZWRNYWluTG9vcCgpOworICAgIG1haW5SdW5Mb29wLnBv
cE5lc3RlZE1haW5Mb29wKCk7CiB9CiAKIEdNYWluTG9vcCogUnVuTG9vcDo6aW5uZXJtb3N0TG9v
cCgpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIGdfbWFp
bl9jb250ZXh0X3dha2V1cChtX3J1bkxvb3BDb250ZXh0LmdldCgpKTsKIH0KIAotUnVuTG9vcDo6
VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkKK1J1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkK
ICAgICAsIG1fdGltZXJTb3VyY2UoMCkKIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJ1bkxv
b3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIGZpCiAgICAgbV90aW1lclNvdXJjZSA9IGFkb3B0
R1JlZihnX3RpbWVvdXRfc291cmNlX25ldyhzdGF0aWNfY2FzdDxndWludD4oZmlyZUludGVydmFs
ICogMTAwMCkpKTsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwogICAgIGdfc291cmNlX3Nl
dF9jYWxsYmFjayhtX3RpbWVyU291cmNlLmdldCgpLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VG
dW5jPigmUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkQ2FsbGJhY2spLCB0aGlzLCAwKTsK
LSAgICBnX3NvdXJjZV9hdHRhY2gobV90aW1lclNvdXJjZS5nZXQoKSwgbV9ydW5Mb29wLT5tX3J1
bkxvb3BDb250ZXh0LmdldCgpKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV90aW1lclNvdXJjZS5n
ZXQoKSwgbV9ydW5Mb29wLm1fcnVuTG9vcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFJ1bkxv
b3A6OlRpbWVyQmFzZTo6c3RvcCgpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCShy
ZXZpc2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVU
aW1lcklEKCkKICAgICByZXR1cm4gdW5pcXVlVGltZXJJRCsrOwogfQogCi1SdW5Mb29wOjpUaW1l
ckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorUnVuTG9vcDo6VGltZXJCYXNlOjpU
aW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQogICAg
ICwgbV9JRChnZW5lcmF0ZVRpbWVySUQoKSkKICAgICAsIG1faXNSZXBlYXRpbmcoZmFsc2UpCkBA
IC0xNTQsMjMgKzE1NCwyMyBAQCBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBib29s
IHJlcGVhdCkKIHsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwotICAgIG1fcnVuTG9vcC0+
bV9hY3RpdmVUaW1lcnMuc2V0KG1fSUQsIHRoaXMpOwotICAgIDo6U2V0VGltZXIobV9ydW5Mb29w
LT5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBtX0lELCBuZXh0RmlyZUludGVydmFsICogMTAwMCwg
MCk7CisgICAgbV9ydW5Mb29wLm1fYWN0aXZlVGltZXJzLnNldChtX0lELCB0aGlzKTsKKyAgICA6
OlNldFRpbWVyKG1fcnVuTG9vcC5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBtX0lELCBuZXh0Rmly
ZUludGVydmFsICogMTAwMCwgMCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KCkKIHsKLSAgICBUaW1lck1hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bkxvb3AtPm1fYWN0aXZlVGlt
ZXJzLmZpbmQobV9JRCk7Ci0gICAgaWYgKGl0ID09IG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMu
ZW5kKCkpCisgICAgVGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydW5Mb29wLm1fYWN0aXZlVGlt
ZXJzLmZpbmQobV9JRCk7CisgICAgaWYgKGl0ID09IG1fcnVuTG9vcC5tX2FjdGl2ZVRpbWVycy5l
bmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9ydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5y
ZW1vdmUoaXQpOwotICAgIDo6S2lsbFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdp
bmRvdywgbV9JRCk7CisgICAgbV9ydW5Mb29wLm1fYWN0aXZlVGltZXJzLnJlbW92ZShpdCk7Cisg
ICAgOjpLaWxsVGltZXIobV9ydW5Mb29wLm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIG1fSUQpOwog
fQogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmNvbnRhaW5zKG1fSUQpOworICAgIHJldHVy
biBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMuY29udGFpbnMobV9JRCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1NzEwKQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDMt
MTYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFVzZSBS
dW5Mb29wIG9iamVjdHMgdGhyb3VnaCByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDMxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6
Y2xvc2VGdW5jKToKKwogMjAxNC0wMy0xNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6dm0oKSBzaG91bGQgcmV0dXJu
IGEgcmVmZXJlbmNlLgpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gMTY1NzA4KQorKysgU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0
IGNoYXIqIHVyaSkKICAgICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHJlc3BvbnNlLnVy
bCgpKSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCi0gICAgcmV0dXJuIG5l
dyBPZmZzZXRCdWZmZXIoZGF0YSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2Zmc2V0
QnVmZmVyPihkYXRhKS5yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBpbnQgcmVhZEZ1bmModm9pZCog
Y29udGV4dCwgY2hhciogYnVmZmVyLCBpbnQgbGVuKQpAQCAtNDg2LDEwICs0ODYsOCBAQCBzdGF0
aWMgaW50IHdyaXRlRnVuYyh2b2lkKiwgY29uc3QgY2hhciosCiAKIHN0YXRpYyBpbnQgY2xvc2VG
dW5jKHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKGNvbnRleHQgIT0gJmdsb2JhbERlc2NyaXB0
b3IpIHsKLSAgICAgICAgT2Zmc2V0QnVmZmVyKiBkYXRhID0gc3RhdGljX2Nhc3Q8T2Zmc2V0QnVm
ZmVyKj4oY29udGV4dCk7Ci0gICAgICAgIGRlbGV0ZSBkYXRhOwotICAgIH0KKyAgICBpZiAoY29u
dGV4dCAhPSAmZ2xvYmFsRGVzY3JpcHRvcikKKyAgICAgICAgc3RkOjpkZWZhdWx0X2RlbGV0ZTxP
ZmZzZXRCdWZmZXI+KCkoc3RhdGljX2Nhc3Q8T2Zmc2V0QnVmZmVyKj4oY29udGV4dCkpOwogICAg
IHJldHVybiAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjU3MTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NyBAQAorMjAx
NC0wMy0xNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAg
VXNlIFJ1bkxvb3Agb2JqZWN0cyB0aHJvdWdoIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzEz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURC
RGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlk
Q2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6U3luY01lc3Nh
Z2VTdGF0ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6On5T
eW5jTWVzc2FnZVN0YXRlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VT
dGF0ZTo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkNv
bm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNz
YWdlUmVjZWl2ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2Up
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2VGcm9tU2Vjb25kYXJ5
VGhyZWFkKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjp3YWtlVXBSdW5Mb29wKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaGlsZFByb2Nlc3M6OnN0b3BSdW5Mb29wKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OUE9iamVjdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RQcm94eTo6TlBf
RGVhbGxvY2F0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVy
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdFRvU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6
OnRyeVByZWV4aXN0aW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVByb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbik6CisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6cGx1Z2luVGhyZWFkQXN5bmNDYWxsKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OnVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6
OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisKIDIwMTQt
MDMtMTYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1v
dmUgR1RLIFdlYktpdDIgY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCShyZXZpc2lv
biAxNjU3MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDEyIEBAIGJvb2wgRGF0YWJhc2VQ
cm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uKikKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5n
UmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCktPnN0b3AoKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwogfQogCiBQYXNzUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVl
SURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVy
KQpJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE2NTcwOCkKKysr
IFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg1LDcgKzEwODUsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpwb3N0TWFpblRocmVhZFRhCiAKICAgICAvLyBCYWxhbmNlZCBieSBhbiBhZG9w
dFJlZigpIGluIDo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzawogICAgIHJlZigpOwotICAgIFJ1
bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1O
ZXh0TWFpblRocmVhZFRhc2ssIHRoaXMpKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
YmluZCgmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVhZFRhc2ssIHRoaXMp
KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFz
aygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCShyZXZpc2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMiArMTI1LDEy
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiopCiB7CiAgICAgLy8gVGhlIFVJUHJv
Y2VzcyBqdXN0IGV4aXRlZC4KLSAgICBSdW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3Rv
cCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MTY1NzA4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGwKICAgICBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JX
aWxsU2VuZFJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KG5l
d1JlcXVlc3QpOwogI2VuZGlmCiAKLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQo
Jk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3Jr
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLCB0aGlzLCBt
X3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3QudXJsKCkpKTsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goYmluZCgmTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVj
ZWl2ZWRSZWRpcmVjdCwgJk5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyKCksIHRoaXMsIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVz
dC51cmwoKSkpOwogCiAgICAgbV9yZXF1ZXN0ID0gbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNl
bmRSZXF1ZXN0OwogICAgIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAkocmV2aXNpb24gMTY1NzA4KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBJUEMgewogCiBjbGFzcyBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBnZXRPckNyZWF0
ZShSdW5Mb29wKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3luY01lc3NhZ2VTdGF0ZT4gZ2V0
T3JDcmVhdGUoUnVuTG9vcCYpOwogICAgIH5TeW5jTWVzc2FnZVN0YXRlKCk7CiAKICAgICB2b2lk
IHdha2VVcENsaWVudFJ1bkxvb3AoKQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaXNwYXRjaE1lc3NhZ2VzKENvbm5lY3Rpb24qIGFsbG93ZWRDb25uZWN0aW9uKTsKIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBTeW5jTWVzc2FnZVN0YXRlKFJ1bkxvb3AqKTsKKyAgICBleHBs
aWNpdCBTeW5jTWVzc2FnZVN0YXRlKFJ1bkxvb3AmKTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxS
dW5Mb29wKiwgU3luY01lc3NhZ2VTdGF0ZSo+IFN5bmNNZXNzYWdlU3RhdGVNYXA7CiAgICAgc3Rh
dGljIFN5bmNNZXNzYWdlU3RhdGVNYXAmIHN5bmNNZXNzYWdlU3RhdGVNYXAoKQpAQCAtNzYsNyAr
NzYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNj
aGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24oQ29ubmVjdGlvbiopOwogCi0gICAg
UnVuTG9vcCogbV9ydW5Mb29wOworICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKICAgICBCaW5hcnlT
ZW1hcGhvcmUgbV93YWl0Rm9yU3luY1JlcGx5U2VtYXBob3JlOwogCiAgICAgLy8gUHJvdGVjdHMg
bV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0IGFuZCBtX21lc3NhZ2VzVG9EaXNw
YXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS4KQEAgLTEwMSwxMCArMTAxLDEwIEBAIHB1Ymxp
YzoKIH07CiAKIAotUGFzc1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQor
UGFzc1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wJiBydW5Mb29wKQogewogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAgU3luY01lc3Nh
Z2VTdGF0ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5hZGQo
cnVuTG9vcCwgbnVsbHB0cik7CisgICAgU3luY01lc3NhZ2VTdGF0ZU1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5hZGQoJnJ1bkxvb3AsIG51bGxwdHIpOwogCiAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgUGFzc1JlZlB0cjxDb25uZWN0aW9uOjpT
eW5jTWVzc2FnZVN0YXRlPgogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJlbGVhc2UoKTsK
IH0KIAotQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6U3luY01lc3NhZ2VTdGF0ZShSdW5M
b29wKiBydW5Mb29wKQorQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6U3luY01lc3NhZ2VT
dGF0ZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiB7CiB9CkBA
IC0xMjYsOCArMTI2LDggQEAgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6flN5bmNNZXNz
YQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7
CiAgICAgCi0gICAgQVNTRVJUKHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5jb250YWlucyhtX3J1bkxv
b3ApKTsKLSAgICBzeW5jTWVzc2FnZVN0YXRlTWFwKCkucmVtb3ZlKG1fcnVuTG9vcCk7CisgICAg
QVNTRVJUKHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5jb250YWlucygmbV9ydW5Mb29wKSk7CisgICAg
c3luY01lc3NhZ2VTdGF0ZU1hcCgpLnJlbW92ZSgmbV9ydW5Mb29wKTsKIAogICAgIEFTU0VSVCht
X21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5pc0VtcHR5KCkpOwog
fQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6
cHJvY2UKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgICAgICAKICAg
ICAgICAgaWYgKG1fZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5hZGQoY29ubmVj
dGlvbikuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goYmluZCgm
U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlQW5kUmVzZXREaWRTY2hlZHVsZURpc3Bh
dGNoTWVzc2FnZXNGb3JDb25uZWN0aW9uLCB0aGlzLCBSZWZQdHI8Q29ubmVjdGlvbj4oY29ubmVj
dGlvbikpKTsKKyAgICAgICAgICAgIG1fcnVuTG9vcC5kaXNwYXRjaChiaW5kKCZTeW5jTWVzc2Fn
ZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdl
c0ZvckNvbm5lY3Rpb24sIHRoaXMsIFJlZlB0cjxDb25uZWN0aW9uPihjb25uZWN0aW9uKSkpOwog
CiAgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFw
cGVuZChzdGQ6Om1vdmUoY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSkpOwogICAgIH0KQEAg
LTE1Nyw3ICsxNTcsNyBAQCBib29sIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnByb2Nl
CiAKIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhD
b25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQobV9ydW5Mb29wID09
IFJ1bkxvb3A6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6
OmN1cnJlbnQoKSk7CiAKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4g
bWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5OwogCkBAIC0yMDAsMTcg
KzIwMCwxNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhCiAgICAg
ZGlzcGF0Y2hNZXNzYWdlcyhjb25uZWN0aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxDb25uZWN0aW9u
PiBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ2xpZW50KiBjbGllbnQsIFJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApCitQYXNzUmVmUHRyPENv
bm5lY3Rpb24+IENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBDbGllbnQqIGNsaWVudCwgUnVuTG9vcCYgY2xpZW50UnVuTG9vcCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENvbm5lY3Rpb24oaWRlbnRpZmllciwgdHJ1ZSwgY2xpZW50
LCBjbGllbnRSdW5Mb29wKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gQ29ubmVjdGlv
bjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIENsaWVudCog
Y2xpZW50LCBSdW5Mb29wKiBjbGllbnRSdW5Mb29wKQorUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBD
b25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIgaWRlbnRpZmllciwg
Q2xpZW50KiBjbGllbnQsIFJ1bkxvb3AmIGNsaWVudFJ1bkxvb3ApCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDb25uZWN0aW9uKGlkZW50aWZpZXIsIGZhbHNlLCBjbGllbnQsIGNsaWVudFJ1
bkxvb3ApKTsKIH0KIAotQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCogY2xpZW50LCBSdW5Mb29wKiBjbGllbnRSdW5Mb29w
KQorQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCogY2xpZW50LCBSdW5Mb29wJiBjbGllbnRSdW5Mb29wKQogICAgIDogbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9pc1NlcnZlcihpc1NlcnZlcikKICAgICAsIG1fc3luY1Jl
cXVlc3RJRCgwKQpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2V0U2hvdWxk
RXhpdE9uU3luY01lc3MKIAogdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSogd29y
a1F1ZXVlLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
cikKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fY2xpZW50UnVuTG9vcCk7CiAg
ICAgQVNTRVJUKCFtX2lzQ29ubmVjdGVkKTsKIAogICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNw
YXRjaChiaW5kKCZDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJPbkNvbm5l
Y3Rpb25Xb3JrUXVldWUsIHRoaXMsIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFJlZlB0cjxXb3JrUXVl
dWU+KHdvcmtRdWV1ZSksIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+KHdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlcikpKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIENvbm5lY3Rpb246
OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlCiAKIHZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQog
ewotICAgIEFTU0VSVChSdW5Mb29wOjpjdXJyZW50KCkgPT0gbV9jbGllbnRSdW5Mb29wKTsKKyAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9jbGllbnRSdW5Mb29wKTsKIAogICAg
IG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChiaW5kKCZDb25uZWN0aW9uOjpyZW1vdmVXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXJPbkNvbm5lY3Rpb25Xb3JrUXVldWUsIHRoaXMsIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpKTsKIH0KQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZURlY29kZXI+IENvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2Rlciwgc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcyB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewotICAgIGlmIChSdW5Mb29w
OjpjdXJyZW50KCkgIT0gbV9jbGllbnRSdW5Mb29wKSB7CisgICAgaWYgKCZSdW5Mb29wOjpjdXJy
ZW50KCkgIT0gJm1fY2xpZW50UnVuTG9vcCkgewogICAgICAgICAvLyBObyBmbGFncyBhcmUgc3Vw
cG9ydGVkIGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcyBzZW50IGZyb20gc2Vjb25kYXJ5IHRocmVh
ZHMuCiAgICAgICAgIEFTU0VSVCghc3luY1NlbmRGbGFncyk7CiAgICAgICAgIHJldHVybiBzZW5k
U3luY01lc3NhZ2VGcm9tU2Vjb25kYXJ5VGhyZWFkKHN5bmNSZXF1ZXN0SUQsIHN0ZDo6bW92ZShl
bmNvZGVyKSwgdGltZW91dCk7CkBAIC00ODAsNyArNDgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VEZWNvZGVyPiBDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6
OmN1cnJlbnQoKSAhPSBtX2NsaWVudFJ1bkxvb3ApOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3Vy
cmVudCgpICE9ICZtX2NsaWVudFJ1bkxvb3ApOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAg
IC8vIEZJWE1FOiBBbHRob3VnaCB3ZSBydW4gZm9yZXZlciwgYW55IGV2ZW50cyBpbmNvbWluZyB3
aWxsIGNhdXNlIHVzIHRvIGRyb3Agb3V0IGFuZCBleGl0IG91dC4gVGhpcyBob3dldmVyIGRvZXNu
J3QKICAgICAgICAgICAgIC8vIGFjY291bnQgZm9yIGEgdGltZW91dCB2YWx1ZSBwYXNzZWQgaW4u
IFRpbWVvdXQgaXMgYWx3YXlzIE5vVGltZW91dCBpbiB0aGVzZSBjYXNlcywgYnV0IHRoYXQgY291
bGQgY2hhbmdlLgotICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5ydW5Gb3JEdXJhdGlv
bigxZTEwKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5Gb3JEdXJhdGlvbigx
ZTEwKTsKICAgICAgICAgICAgIHRpbWVkT3V0ID0gY3VycmVudFRpbWUoKSA+PSBhYnNvbHV0ZVRp
bWU7CiAjZW5kaWYKICAgICAgICAgfSBlbHNlCkBAIC02MTMsMTEgKzYxMywxMSBAQCB2b2lkIENv
bm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoCiAgICAgICAgICAgICBDU3RyaW5nIG1l
c3NhZ2VSZWNlaXZlck5hbWUgPSAiPHVua25vd24gbWVzc2FnZT4iOwogICAgICAgICAgICAgQ1N0
cmluZyBtZXNzYWdlTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCI8bWVzc2FnZSBsZW5ndGg6ICV6dSBi
eXRlcz4iLCBtZXNzYWdlLT5sZW5ndGgoKSkudXRmOCgpOwogCi0gICAgICAgICAgICBtX2NsaWVu
dFJ1bkxvb3AtPmRpc3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlLCB0aGlzLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSkpOwor
ICAgICAgICAgICAgbV9jbGllbnRSdW5Mb29wLmRpc3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlLCB0aGlzLCBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBtZXNzYWdlTmFtZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV9jbGllbnRSdW5Mb29wLT5kaXNwYXRjaChiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaERp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSwgdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLnRvU3RyaW5nKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKSkpOworICAg
ICAgICBtX2NsaWVudFJ1bkxvb3AuZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hE
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UsIHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5h
bWUoKS50b1N0cmluZygpLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6Y29ubmVjdGlvbkRpZENsb3NlKCkKICAgICBpZiAobV9kaWRDbG9zZU9uQ29ubmVjdGlvbldv
cmtRdWV1ZUNhbGxiYWNrKQogICAgICAgICBtX2RpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVl
Q2FsbGJhY2sodGhpcyk7CiAKLSAgICBtX2NsaWVudFJ1bkxvb3AtPmRpc3BhdGNoKFdURjo6Ymlu
ZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hDb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKKyAgICBt
X2NsaWVudFJ1bkxvb3AuZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaENv
bm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNo
Q29ubmVjdGlvbkRpZENsb3NlKCkKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIENvbm5lY3Rpb246
OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0
cmluZywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpCiB7Ci0gICAgQVNTRVJUKFJ1
bkxvb3A6OmN1cnJlbnQoKSA9PSBtX2NsaWVudFJ1bkxvb3ApOworICAgIEFTU0VSVCgmUnVuTG9v
cDo6Y3VycmVudCgpID09ICZtX2NsaWVudFJ1bkxvb3ApOwogCiAgICAgaWYgKCFtX2NsaWVudCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzY4LDcgKzc2OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5x
dWV1ZUluY29taW5nTWVzc2FnZSgKICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLmFwcGVuZChz
dGQ6Om1vdmUoaW5jb21pbmdNZXNzYWdlKSk7CiAgICAgfQogCi0gICAgbV9jbGllbnRSdW5Mb29w
LT5kaXNwYXRjaChXVEY6OmJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSwgdGhp
cykpOworICAgIG1fY2xpZW50UnVuTG9vcC5kaXNwYXRjaChXVEY6OmJpbmQoJkNvbm5lY3Rpb246
OmRpc3BhdGNoT25lTWVzc2FnZSwgdGhpcykpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoTWVzc2FnZShNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTgyNSw3ICs4MjUsNyBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6
d2FrZVVwUnVuTG9vcCgpCiB7Ci0gICAgbV9jbGllbnRSdW5Mb29wLT53YWtlVXAoKTsKKyAgICBt
X2NsaWVudFJ1bkxvb3Aud2FrZVVwKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpJbmRleDog
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAxNjU3MDgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjcsOCArMTI3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDb25uZWN0aW9uOjpT
b2NrZXRQYWlyIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZp
ZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVudGlmaWVyLCBD
bGllbnQqLCBXVEY6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbm5lY3Rpb24+IGNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50
KiwgV1RGOjpSdW5Mb29wJiBjbGllbnRSdW5Mb29wKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
b25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdU
Rjo6UnVuTG9vcCYgY2xpZW50UnVuTG9vcCk7CiAgICAgfkNvbm5lY3Rpb24oKTsKIAogICAgIENs
aWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTE3Nyw3ICsxNzcs
NyBAQCBwdWJsaWM6CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgotICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50
KiwgV1RGOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKKyAgICBDb25uZWN0aW9uKElkZW50aWZp
ZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCYgY2xpZW50UnVuTG9vcCk7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CiAgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKICAgICAKQEAgLTIyMyw3ICsyMjMsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2lzQ29ubmVjdGVkOwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fY29ubmVjdGlv
blF1ZXVlOwotICAgIFdURjo6UnVuTG9vcCogbV9jbGllbnRSdW5Mb29wOworICAgIFdURjo6UnVu
TG9vcCYgbV9jbGllbnRSdW5Mb29wOwogCiAgICAgSGFzaE1hcDxTdHJpbmdSZWZlcmVuY2UsIHN0
ZDo6cGFpcjxSZWZQdHI8V29ya1F1ZXVlPiwgUmVmUHRyPFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
cj4+PiBtX3dvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9DaGlsZFByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGlvblRpbWVyRmlyZWQKIAogdm9pZCBDaGls
ZFByb2Nlc3M6OnN0b3BSdW5Mb29wKCkKIHsKLSAgICBSdW5Mb29wOjptYWluKCktPnN0b3AoKTsK
KyAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwogfQogCiB2b2lkIENoaWxkUHJvY2Vzczo6dGVy
bWluYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2Jq
ZWN0UHJveHkuY3BwCShyZXZpc2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAzLDcgKzMwMyw3
IEBAIHZvaWQgTlBPYmplY3RQcm94eTo6TlBfRGVhbGxvY2F0ZShOUE9iamUKICAgICAvLyB0aGF0
IGlzIGtub3duIHRvIGJlIG1pc3VzZWQgZHVyaW5nIHBsdWdpbiB0ZWFyZG93biwgYW5kIHRvIG5v
dCBiZSBjb25jZXJuZWQgYWJvdXQgY2hhbmdlIGluIGJlaGF2aW9yIGlmIHRoaXMKICAgICAvLyBv
Y2N1cmVkIGF0IGFueSBvdGhlciB0aW1lLgogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZOUE9iamVjdFByb3h5OjpOUF9E
ZWFsbG9jYXRlLCBucE9iamVjdCkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
YmluZCgmTlBPYmplY3RQcm94eTo6TlBfRGVhbGxvY2F0ZSwgbnBPYmplY3QpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAJKHJldmlz
aW9uIDE2NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJv
Y2Vzc0xhdW5jaGVyRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHZv
aWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgY2xvc2Uoc29ja2V0
c1swXSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAgICAgICAgIC8vIFdl
J3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBt
YWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlBy
b2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgcGlkLCBzb2Nr
ZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZQcm9jZXNz
TGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgc29ja2V0c1sx
XSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCShyZXZpc2lvbiAxNjU3MDgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hl
ckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsK
IAogICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBi
YWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2go
YmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBt
X3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFdKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzcywg
dGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwgc29ja2V0c1sxXSkpOwogfQogCiB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bQkocmV2aXNpb24gMTY1NzA4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEs
NyBAQCBzdGF0aWMgdm9pZCBjb25uZWN0VG9TZXJ2aWNlKGNvbnN0IFByb2NlCiAgICAgICAgICAg
ICAvLyBBbmQgdGhlIHJlY2VpdmUgcmlnaHQuCiAgICAgICAgICAgICBtYWNoX3BvcnRfbW9kX3Jl
ZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJ
VkUsIC0xKTsKIAotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRp
ZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgdGhhdCwgMCwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChi
aW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgdGhhdCwgMCwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFT
U0VSVCh0eXBlID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwogICAgICAgICAgICAgQVNTRVJUKCFz
dHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhyZXBseSwgIm1lc3NhZ2UtbmFtZSIpLCAi
cHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKSk7CkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGlj
IHZvaWQgY29ubmVjdFRvU2VydmljZShjb25zdCBQcm9jZQogICAgICAgICAgICAgcGlkX3QgcHJv
Y2Vzc0lkZW50aWZpZXIgPSB4cGNfY29ubmVjdGlvbl9nZXRfcGlkKGNvbm5lY3Rpb24pOwogCiAg
ICAgICAgICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3Nh
Z2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS0+ZGlzcGF0Y2goYmluZChkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIHRoYXQs
IHByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5n
UG9ydCwgY29ubmVjdGlvbikpKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0LCBjb25u
ZWN0aW9uKSkpOwogICAgICAgICB9CiAKICAgICAgICAgdGhhdC0+ZGVyZWYoKTsKQEAgLTM1OCw3
ICszNTgsNyBAQCBzdGF0aWMgYm9vbCB0cnlQcmVleGlzdGluZ1Byb2Nlc3MoY29uc3QKICAgICB9
CiAgICAgCiAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNz
YWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNw
YXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vz
c0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSkp
OworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00
OTgsNyArNDk4LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlUHJvY2Vzcyhjb25zdCBQcm9jZXNzTAog
ICAgIH0KIAogICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVz
c2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlz
cGF0Y2goYmluZChkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIHRoYXQsIHByb2Nl
c3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkp
KTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZChkaWRGaW5pc2hMYXVuY2hpbmdQ
cm9jZXNzRnVuY3Rpb24sIHRoYXQsIHByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTY1NzA4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjEsMTQgKzQyMSwxNCBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcm9jZXNzV2ls
bENsb3NlQ29uCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goYmluZCgmU3RvcmFnZU1hbmFnZXI6Omlu
dmFsaWRhdGVDb25uZWN0aW9uSW50ZXJuYWwsIHRoaXMsIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+
KHdlYlByb2Nlc3NQcm94eS0+Y29ubmVjdGlvbigpKSkpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRPcmlnaW5zKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2
b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmlnaW5zLCB2b2lkKiBjb250ZXh0KSkKK3Zv
aWQgU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnMoRnVuY3Rpb25EaXNwYXRjaGVyJiBjYWxsYmFj
a0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3QgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9yaWdpbnMsIHZvaWQq
IGNvbnRleHQpKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKGJpbmQoJlN0b3JhZ2VNYW5hZ2Vy
OjpnZXRPcmlnaW5zSW50ZXJuYWwsIHRoaXMsIFJlZlB0cjxGdW5jdGlvbkRpc3BhdGNoZXI+KGNh
bGxiYWNrRGlzcGF0Y2hlciksIGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goYmluZCgmU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnNJbnRlcm5hbCwgdGhpcywgUmVm
UHRyPEZ1bmN0aW9uRGlzcGF0Y2hlcj4oJmNhbGxiYWNrRGlzcGF0Y2hlciksIGNvbnRleHQsIGNh
bGxiYWNrKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VEZXRhaWxzQnlP
cmlnaW4oRnVuY3Rpb25EaXNwYXRjaGVyKiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRl
eHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+JiBz
dG9yYWdlRGV0YWlscywgdm9pZCogY29udGV4dCkpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRT
dG9yYWdlRGV0YWlsc0J5T3JpZ2luKEZ1bmN0aW9uRGlzcGF0Y2hlciYgY2FsbGJhY2tEaXNwYXRj
aGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0
b3JhZ2VEZXRhaWxzPiYgc3RvcmFnZURldGFpbHMsIHZvaWQqIGNvbnRleHQpKQogewotICAgIG1f
cXVldWUtPmRpc3BhdGNoKGJpbmQoJlN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdlRGV0YWlsc0J5
T3JpZ2luSW50ZXJuYWwsIHRoaXMsIFJlZlB0cjxGdW5jdGlvbkRpc3BhdGNoZXI+KGNhbGxiYWNr
RGlzcGF0Y2hlciksIGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
YmluZCgmU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5JbnRlcm5hbCwg
dGhpcywgUmVmUHRyPEZ1bmN0aW9uRGlzcGF0Y2hlcj4oJmNhbGxiYWNrRGlzcGF0Y2hlciksIGNv
bnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCShyZXZp
c2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIEZJWE1FOiBJbnN0ZWFkIG9mIGEgY29udGV4dCArIEMgZnVuY3Rpb24sIHRoaXMgc2hvdWxk
IHRha2UgYSBXVEY6OkZ1bmN0aW9uLCBidXQgd2UgY3VycmVudGx5IGRvbid0CiAgICAgLy8gc3Vw
cG9ydCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zLgotICAgIHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlv
bkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNh
bGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mLCB2
b2lkKiBjb250ZXh0KSk7Ci0gICAgdm9pZCBnZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKEZ1bmN0
aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgq
Y2FsbGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VEZXRhaWxzPiYsIHZvaWQqIGNvbnRl
eHQpKTsKKyAgICB2b2lkIGdldE9yaWdpbnMoRnVuY3Rpb25EaXNwYXRjaGVyJiBjYWxsYmFja0Rp
c3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3QgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+Jiwgdm9pZCogY29udGV4dCkpOworICAgIHZv
aWQgZ2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihGdW5jdGlvbkRpc3BhdGNoZXImIGNhbGxiYWNr
RGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8
TG9jYWxTdG9yYWdlRGV0YWlscz4mLCB2b2lkKiBjb250ZXh0KSk7CiAgICAgdm9pZCBkZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBkZWxl
dGVBbGxFbnRyaWVzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE2NTcwOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU3Myw3ICsxNTczLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojp1bnByb3RlY3RQbHVnaW5Gcm9tRGVz
dAogICAgIC8vIHRoZSBkZXN0cm95ZWQgb2JqZWN0IGhpZ2hlciBvbiB0aGUgc3RhY2suIFRvIHBy
ZXZlbnQgdGhpcywgaWYgdGhlIHBsdWctaW4gaGFzCiAgICAgLy8gb25seSBvbmUgcmVtYWluaW5n
IHJlZmVyZW5jZSwgY2FsbCBkZXJlZigpIGFzeW5jaHJvbm91c2x5LgogICAgIGlmIChoYXNPbmVS
ZWYoKSkKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRlcmVmUGx1Z2lu
VmlldywgdGhpcykpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZChkZXJl
ZlBsdWdpblZpZXcsIHRoaXMpKTsKICAgICBlbHNlCiAgICAgICAgIGRlcmVmKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHJldmlzaW9uIDE2NTcwOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwb3BQ
b3B1cHNFbmFibGVkU3RhCiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsdWdpblRocmVhZEFzeW5j
Q2FsbCh2b2lkICgqZnVuY3Rpb24pKHZvaWQqKSwgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgUnVu
TG9vcDo6bWFpbigpLT5kaXNwYXRjaChXVEY6OmJpbmQoJk5ldHNjYXBlUGx1Z2luOjpoYW5kbGVQ
bHVnaW5UaHJlYWRBc3luY0NhbGwsIHRoaXMsIGZ1bmN0aW9uLCB1c2VyRGF0YSkpOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEY6OmJpbmQoJk5ldHNjYXBlUGx1Z2luOjpoYW5kbGVQ
bHVnaW5UaHJlYWRBc3luY0NhbGwsIHRoaXMsIGZ1bmN0aW9uLCB1c2VyRGF0YSkpOwogfQogICAg
IAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6aGFuZGxlUGx1Z2luVGhyZWFkQXN5bmNDYWxsKHZvaWQg
KCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiB1c2VyRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZp
c2lvbiAxNjU3MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnRE
aXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgRXZl
bnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF8KICAgICBVTlVTRURfUEFSQU0oY2FuUnVi
YmVyQmFuZEF0Qm90dG9tKTsKICNlbmRpZgogCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRj
aChiaW5kKCZFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCwgdGhpcywgcGFnZUlE
LCB3aGVlbEV2ZW50KSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJkV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50LCB0aGlzLCBwYWdlSUQsIHdoZWVsRXZlbnQp
KTsKIH0KIAogdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5jcHAJKHJldmlzaW9uIDE2NTcwOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDcgKzYwLDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbgogICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9kYXRhTXV0ZXgpOwogICAgICAgICBtX2xhdGVzdFVw
ZGF0ZS5zZXQocGFnZUlELCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKTsKICAgICB9Ci0g
ICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUsIHRoaXMpKTsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goYmluZCgmVmlld1VwZGF0ZURpc3BhdGNoZXI6OmRpc3BhdGNoVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlLCB0aGlzKSk7CiB9CiAKIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNo
ZXI6OmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE2NTcwOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODg1LDcgKzg4NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwogCiAgICAgaWYgKGlz
UnVubmluZ01vZGFsKQotICAgICAgICBSdW5Mb29wOjptYWluKCktPnN0b3AoKTsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp0cnlDbG9zZSgpCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNjU3MTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNC0wMy0xNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CisKKyAgICAgICAgVXNlIFJ1bkxvb3Agb2JqZWN0cyB0aHJvdWdoIHJlZmVyZW5jZXMgaW5zdGVh
ZCBvZiBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwMzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9NRE9NV2luZG93VGVzdC5j
cHA6CisgICAgICAgIChsb2FkZWRDYWxsYmFjayk6CisgICAgICAgIChjbGlja2VkQ2FsbGJhY2sp
OgorCiAyMDE0LTAzLTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXVtDTWFrZV0gQnVpbGQgd2l0aCAtZm5vLXJ0dGkKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01ET01XaW5kb3dUZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9NRE9NV2luZG93
VGVzdC5jcHAJKHJldmlzaW9uIDE2NTcwOCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9ET01ET01XaW5kb3dUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBsb2FkZWRDYWxsYmFjayhXZWJLaXRET00KICAgICB0
ZXN0LT5ub3RpZnkoImxvYWRlZCIsICIiKTsKIAogICAgIC8vIFN0b3AgdGhlIGxvb3AgYW5kIGxl
dCB0ZXN0U2lnbmFscygpIG9yIHRlc3REaXNwYXRjaEV2ZW50KCkgY29udGludWUgaXRzIGNvdXJz
ZQotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5zdG9wKCk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgc3Rh
dGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRETwogICAgIHRlc3QtPm5vdGlmeSgi
ZmluaXNoIiwgIiIpOwogCiAgICAgLy8gU3RvcCB0aGUgbG9vcCBhbmQgbGV0IHRlc3RTaWduYWxz
KCkgb3IgdGVzdERpc3BhdGNoRXZlbnQoKSBjb250aW51ZSBpdHMgY291cnNlCi0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLT5zdG9wKCk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKIAog
ICAgIHJldHVybiBGQUxTRTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226863</attachid>
            <date>2014-03-16 15:16:34 -0700</date>
            <delta_ts>2014-03-17 07:40:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130313-20140316151611.patch</filename>
            <type>text/plain</type>
            <size>40426</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjU3MTEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE0LTAzLTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgUnVuTG9vcCBvYmplY3RzIHRocm91Z2gg
cmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFJ1bkxvb3A6OmN1cnJlbnQoKSBhbmQgUnVuTG9v
cDo6bWFpbigpIHJldHVybiBhIFJ1bkxvb3AgcmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAgb2Yg
YSBwb2ludGVyLiBSdW5Mb29wOjpIb2xkZXIgbm93IHVzZXMgYSBSZWY8UnVuTG9vcD4gbWVtYmVy
LiBUaW1lciBhbmQgVGltZXJCYXNlCisgICAgICAgIGNvbnN0cnVjdG9ycyB0YWtlIGluIGEgUnVu
TG9vcCByZWZlcmVuY2UsIHdpdGggVGltZXJCYXNlIG5vdyBzdG9yaW5nIGEgUnVuTG9vcAorICAg
ICAgICByZWZlcmVuY2UgbWVtYmVyIGluc3RlYWQgb2YgYSBwb2ludGVyLiBQbGF0Zm9ybS1zcGVj
aWZpYyBiaXRzIG9mIHRoZSBSdW5Mb29wCisgICAgICAgIGNsYXNzIGFyZSB1cGRhdGVkIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogd3RmL1J1bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpIb2xkZXI6OkhvbGRlcik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OkhvbGRlcjo6cnVu
TG9vcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCk6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OmN1cnJlbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpt
YWluKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6aXNNYWluKToKKyAgICAgICAgKiB3dGYvUnVu
TG9vcC5oOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lcjo6VGltZXIpOgorICAgICAgICAq
IHd0Zi9jZi9SdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpydW4pOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9lZmwvUnVuTG9vcEVm
bC5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAg
ICAgICAgKiB3dGYvZ3RrL1J1bkxvb3BHdGsuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpy
dW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi93aW4v
UnVuTG9vcFdpbi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAyMDE0LTAzLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwOiBGaXggdW5kZWZpbmVkIGJlaGF2
aW9yIGluIFdURjo6ZXF1YWwoKSBpbiBTdHJpbmdJbXBsLmggZm9yIGkzODYveDg2XzY0CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9SdW5Mb29wLmNwcAkocmV2aXNpb24gMTY1NzExKQorKysgU291cmNlL1dURi93dGYvUnVuTG9v
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDM5ICszNywzOSBAQCBzdGF0aWMgUnVuTG9vcCog
c19tYWluUnVuTG9vcDsKIGNsYXNzIFJ1bkxvb3A6OkhvbGRlciB7CiBwdWJsaWM6CiAgICAgSG9s
ZGVyKCkKLSAgICAgICAgOiBtX3J1bkxvb3AoYWRvcHRSZWYobmV3IFJ1bkxvb3ApKQorICAgICAg
ICA6IG1fcnVuTG9vcChhZG9wdFJlZigqbmV3IFJ1bkxvb3ApKQogICAgIHsKICAgICB9CiAKLSAg
ICBSdW5Mb29wKiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9Cisg
ICAgUnVuTG9vcCYgcnVuTG9vcCgpIHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxSdW5Mb29wPiBtX3J1bkxvb3A7CisgICAgUmVmPFJ1bkxvb3A+IG1f
cnVuTG9vcDsKIH07CiAKIHZvaWQgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCkKIHsK
ICAgICBpZiAoc19tYWluUnVuTG9vcCkKICAgICAgICAgcmV0dXJuOwotICAgIHNfbWFpblJ1bkxv
b3AgPSBSdW5Mb29wOjpjdXJyZW50KCk7CisgICAgc19tYWluUnVuTG9vcCA9ICZSdW5Mb29wOjpj
dXJyZW50KCk7CiB9CiAKLVJ1bkxvb3AqIFJ1bkxvb3A6OmN1cnJlbnQoKQorUnVuTG9vcCYgUnVu
TG9vcDo6Y3VycmVudCgpCiB7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdU
Rjo6VGhyZWFkU3BlY2lmaWM8UnVuTG9vcDo6SG9sZGVyPiwgcnVuTG9vcEhvbGRlciwgKCkpOwog
ICAgIHJldHVybiBydW5Mb29wSG9sZGVyLT5ydW5Mb29wKCk7CiB9CiAKLVJ1bkxvb3AqIFJ1bkxv
b3A6Om1haW4oKQorUnVuTG9vcCYgUnVuTG9vcDo6bWFpbigpCiB7CiAgICAgQVNTRVJUKHNfbWFp
blJ1bkxvb3ApOwotICAgIHJldHVybiBzX21haW5SdW5Mb29wOworICAgIHJldHVybiAqc19tYWlu
UnVuTG9vcDsKIH0KIAogYm9vbCBSdW5Mb29wOjppc01haW4oKQogewogICAgIEFTU0VSVChzX21h
aW5SdW5Mb29wKTsKLSAgICByZXR1cm4gc19tYWluUnVuTG9vcCA9PSBSdW5Mb29wOjpjdXJyZW50
KCk7CisgICAgcmV0dXJuIHNfbWFpblJ1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKIH0K
IAogdm9pZCBSdW5Mb29wOjpwZXJmb3JtV29yaygpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5oCShyZXZpc2lvbiAx
NjU3MTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDEzICs0NywxNCBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29wKTsK
IHB1YmxpYzoKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCAoZXhj
ZXB0IGZvciB0aGUgTWFjIHBsYXRmb3JtLCB3aGVyZSBpdAogICAgIC8vIGNhbiBiZSBjYWxsZWQg
ZnJvbSBhbnkgdGhyZWFkKS4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJ1
bkxvb3AqIGN1cnJlbnQoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJ1bkxvb3Aq
IG1haW4oKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJ1bkxvb3AmIGN1cnJlbnQo
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJ1bkxvb3AmIG1haW4oKTsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgaXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKTsK
IApAQCAtNzAsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGltZXJCYXNlIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFJ1bkxvb3A7CiAgICAgcHVibGljOgotICAgICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgZXhwbGljaXQgVGltZXJCYXNlKFJ1bkxvb3AqKTsKKyAgICAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGV4cGxpY2l0IFRpbWVyQmFzZShSdW5Mb29wJik7CiAgICAgICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIH5UaW1lckJhc2UoKTsKIAogICAgICAgICB2b2lkIHN0YXJ0UmVw
ZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRlcnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgdHJ1
ZSk7IH0KQEAgLTg0LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBib29s
IHJlcGVhdCk7CiAKLSAgICAgICAgUnVuTG9vcCogbV9ydW5Mb29wOworICAgICAgICBSdW5Mb29w
JiBtX3J1bkxvb3A7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIHN0YXRpYyB2b2lkIHRp
bWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90IElEKTsKQEAgLTExMSw3ICsxMTIsNyBAQCBwdWJs
aWM6CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIHZvaWQgKFRpbWVyRmlyZWRDbGFzczo6
KlRpbWVyRmlyZWRGdW5jdGlvbikoKTsKIAotICAgICAgICBUaW1lcihSdW5Mb29wKiBydW5Mb29w
LCBUaW1lckZpcmVkQ2xhc3MqIG8sIFRpbWVyRmlyZWRGdW5jdGlvbiBmKQorICAgICAgICBUaW1l
cihSdW5Mb29wJiBydW5Mb29wLCBUaW1lckZpcmVkQ2xhc3MqIG8sIFRpbWVyRmlyZWRGdW5jdGlv
biBmKQogICAgICAgICAgICAgOiBUaW1lckJhc2UocnVuTG9vcCkKICAgICAgICAgICAgICwgbV9v
YmplY3QobykKICAgICAgICAgICAgICwgbV9mdW5jdGlvbihmKQpJbmRleDogU291cmNlL1dURi93
dGYvY2YvUnVuTG9vcENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5M
b29wQ0YuY3BwCShyZXZpc2lvbiAxNjU3MTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29w
Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTQgQEAgdm9pZCBSdW5Mb29wOjp3
YWtlVXAoKQogCiB2b2lkIFJ1bkxvb3A6OnJ1bigpCiB7Ci0gICAgY3VycmVudCgpLT5tX25lc3Rp
bmdMZXZlbCsrOworICAgIGN1cnJlbnQoKS5tX25lc3RpbmdMZXZlbCsrOwogICAgIAogICAgIHsK
ICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAgICAgICAgIENGUnVuTG9vcFJ1bigpOwog
ICAgIH0KICAgICAKLSAgICBjdXJyZW50KCktPm1fbmVzdGluZ0xldmVsLS07CisgICAgY3VycmVu
dCgpLm1fbmVzdGluZ0xldmVsLS07CiB9CiAKIHZvaWQgUnVuTG9vcDo6c3RvcCgpCkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKENGUnUKICAgICB0
aW1lci0+ZmlyZWQoKTsKIH0KIAotUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9v
cCogcnVuTG9vcCkKK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxv
b3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKIHsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5lCiAgICAgQ0ZSdW5Mb29wVGlt
ZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAgfTsKICAgICBDRlRpbWVJbnRl
cnZhbCByZXBlYXRJbnRlcnZhbCA9IHJlcGVhdCA/IG5leHRGaXJlSW50ZXJ2YWwgOiAwOwogICAg
IG1fdGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbmV4dEZpcmVJbnRlcnZhbCwgcmVwZWF0
SW50ZXJ2YWwsIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KSk7Ci0gICAgQ0ZSdW5Mb29wQWRk
VGltZXIobV9ydW5Mb29wLT5tX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5Mb29wLm1fcnVuTG9v
cC5nZXQoKSwgbV90aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIAogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQpJbmRleDogU291cmNlL1dURi93dGYvZWZsL1J1
bkxvb3BFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29wRWZs
LmNwcAkocmV2aXNpb24gMTY1NzExKQorKysgU291cmNlL1dURi93dGYvZWZsL1J1bkxvb3BFZmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw4ICs4Myw5IEBAIHZvaWQgUnVuTG9vcDo6d2FrZVVw
KCkKICAgICB9CiB9CiAKLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AqKQot
ICAgIDogbV90aW1lcigwKQorUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYg
cnVuTG9vcCkKKyAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorICAgICwgbV90aW1lcigwKQogICAg
ICwgbV9pc1JlcGVhdGluZyhmYWxzZSkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2d0ay9S
dW5Mb29wR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9ndGsvUnVuTG9vcEd0
ay5jcHAJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XVEYvd3RmL2d0ay9SdW5Mb29wR3Rr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBSdW5Mb29wOjp+UnVuTG9vcCgp
CiAKIHZvaWQgUnVuTG9vcDo6cnVuKCkKIHsKLSAgICBSdW5Mb29wKiBtYWluUnVuTG9vcCA9IFJ1
bkxvb3A6OmN1cnJlbnQoKTsKLSAgICBHTWFpbkxvb3AqIGlubmVybW9zdExvb3AgPSBtYWluUnVu
TG9vcC0+aW5uZXJtb3N0TG9vcCgpOworICAgIFJ1bkxvb3AmIG1haW5SdW5Mb29wID0gUnVuTG9v
cDo6Y3VycmVudCgpOworICAgIEdNYWluTG9vcCogaW5uZXJtb3N0TG9vcCA9IG1haW5SdW5Mb29w
LmlubmVybW9zdExvb3AoKTsKICAgICBpZiAoIWdfbWFpbl9sb29wX2lzX3J1bm5pbmcoaW5uZXJt
b3N0TG9vcCkpIHsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKGlubmVybW9zdExvb3ApOwogICAg
ICAgICByZXR1cm47CkBAIC02Miw5ICs2Miw5IEBAIHZvaWQgUnVuTG9vcDo6cnVuKCkKIAogICAg
IC8vIENyZWF0ZSBhbmQgcnVuIGEgbmVzdGVkIGxvb3AgaWYgdGhlIGlubmVybW9zdCBvbmUgd2Fz
IGFscmVhZHkgcnVubmluZy4KICAgICBHTWFpbkxvb3AqIG5lc3RlZE1haW5Mb29wID0gZ19tYWlu
X2xvb3BfbmV3KDAsIEZBTFNFKTsKLSAgICBtYWluUnVuTG9vcC0+cHVzaE5lc3RlZE1haW5Mb29w
KG5lc3RlZE1haW5Mb29wKTsKKyAgICBtYWluUnVuTG9vcC5wdXNoTmVzdGVkTWFpbkxvb3AobmVz
dGVkTWFpbkxvb3ApOwogICAgIGdfbWFpbl9sb29wX3J1bihuZXN0ZWRNYWluTG9vcCk7Ci0gICAg
bWFpblJ1bkxvb3AtPnBvcE5lc3RlZE1haW5Mb29wKCk7CisgICAgbWFpblJ1bkxvb3AucG9wTmVz
dGVkTWFpbkxvb3AoKTsKIH0KIAogR01haW5Mb29wKiBSdW5Mb29wOjppbm5lcm1vc3RMb29wKCkK
QEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiAgICAgZ19tYWluX2Nv
bnRleHRfd2FrZXVwKG1fcnVuTG9vcENvbnRleHQuZ2V0KCkpOwogfQogCi1SdW5Mb29wOjpUaW1l
ckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorUnVuTG9vcDo6VGltZXJCYXNlOjpU
aW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQogICAg
ICwgbV90aW1lclNvdXJjZSgwKQogewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdGFydChkb3VibGUgZmkKICAgICBtX3RpbWVyU291cmNlID0gYWRvcHRHUmVm
KGdfdGltZW91dF9zb3VyY2VfbmV3KHN0YXRpY19jYXN0PGd1aW50PihmaXJlSW50ZXJ2YWwgKiAx
MDAwKSkpOwogICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7CiAgICAgZ19zb3VyY2Vfc2V0X2Nh
bGxiYWNrKG1fdGltZXJTb3VyY2UuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+
KCZSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWRDYWxsYmFjayksIHRoaXMsIDApOwotICAg
IGdfc291cmNlX2F0dGFjaChtX3RpbWVyU291cmNlLmdldCgpLCBtX3J1bkxvb3AtPm1fcnVuTG9v
cENvbnRleHQuZ2V0KCkpOworICAgIGdfc291cmNlX2F0dGFjaChtX3RpbWVyU291cmNlLmdldCgp
LCBtX3J1bkxvb3AubV9ydW5Mb29wQ29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHJldmlz
aW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVRpbWVy
SUQoKQogICAgIHJldHVybiB1bmlxdWVUaW1lcklEKys7CiB9CiAKLVJ1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVy
QmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAgICAgLCBt
X0lEKGdlbmVyYXRlVGltZXJJRCgpKQogICAgICwgbV9pc1JlcGVhdGluZyhmYWxzZSkKQEAgLTE1
NCwyMyArMTU0LDIzIEBAIFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiB2b2lkIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVw
ZWF0KQogewogICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7Ci0gICAgbV9ydW5Mb29wLT5tX2Fj
dGl2ZVRpbWVycy5zZXQobV9JRCwgdGhpcyk7Ci0gICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1f
cnVuTG9vcE1lc3NhZ2VXaW5kb3csIG1fSUQsIG5leHRGaXJlSW50ZXJ2YWwgKiAxMDAwLCAwKTsK
KyAgICBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMuc2V0KG1fSUQsIHRoaXMpOworICAgIDo6U2V0
VGltZXIobV9ydW5Mb29wLm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIG1fSUQsIG5leHRGaXJlSW50
ZXJ2YWwgKiAxMDAwLCAwKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQog
ewotICAgIFRpbWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMu
ZmluZChtX0lEKTsKLSAgICBpZiAoaXQgPT0gbV9ydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5lbmQo
KSkKKyAgICBUaW1lck1hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMu
ZmluZChtX0lEKTsKKyAgICBpZiAoaXQgPT0gbV9ydW5Mb29wLm1fYWN0aXZlVGltZXJzLmVuZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzLnJlbW92
ZShpdCk7Ci0gICAgOjpLaWxsVGltZXIobV9ydW5Mb29wLT5tX3J1bkxvb3BNZXNzYWdlV2luZG93
LCBtX0lEKTsKKyAgICBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMucmVtb3ZlKGl0KTsKKyAgICA6
OktpbGxUaW1lcihtX3J1bkxvb3AubV9ydW5Mb29wTWVzc2FnZVdpbmRvdywgbV9JRCk7CiB9CiAK
IGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuY29udGFpbnMobV9JRCk7CisgICAgcmV0dXJuIG1f
cnVuTG9vcC5tX2FjdGl2ZVRpbWVycy5jb250YWlucyhtX0lEKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjU3MTEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MCBAQAorMjAxNC0wMy0xNiAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgVXNlIFJ1bkxv
b3Agb2JqZWN0cyB0aHJvdWdoIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzEzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRqdXN0IHRoZSBjb2Rl
IGFjY29yZGluZ2x5IG5vdyB0aGF0IFJ1bkxvb3A6OmN1cnJlbnQoKSBhbmQgUnVuTG9vcDo6bWFp
bigpCisgICAgICAgIHJldHVybiBSdW5Mb29wIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRl
ci4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktp
dDo6RGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAq
IERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjpTeW5jTWVzc2FnZVN0YXRlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
U3luY01lc3NhZ2VTdGF0ZTo6flN5bmNNZXNzYWdlU3RhdGUpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24pOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5j
TWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3
YWl0Rm9yU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9z
ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5nTWVzc2Fn
ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Ondha2VVcFJ1bkxvb3ApOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0NoaWxkUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c3RvcFJ1bkxvb3ApOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVy
L2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0VG9TZXJ2aWNl
KToKKyAgICAgICAgKFdlYktpdDo6dHJ5UHJlZXhpc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6Y3JlYXRlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdlRGV0YWlsc0J5
T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbHVnaW5UaHJlYWRBc3luY0NhbGwp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpW
aWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNsb3NlKToKKwogMjAxNC0wMy0xNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CiAKICAgICAgICAgTW92ZSBHVEsgV2ViS2l0MiBjb2RlIHRvIHN0ZDo6dW5pcXVlX3B0
cgpJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxMiArNjcs
MTIgQEAgYm9vbCBEYXRhYmFzZVByb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCiAKIHZvaWQgRGF0
YWJhc2VQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKQogewotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAK
IHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQogewot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5z
dG9wKCk7CiB9CiAKIFBhc3NSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IERhdGFiYXNlUHJvY2Vz
czo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGlkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAko
cmV2aXNpb24gMTY1NzExKQorKysgU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODUsNyArMTA4
NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGEKIAogICAgIC8v
IEJhbGFuY2VkIGJ5IGFuIGFkb3B0UmVmKCkgaW4gOjpwZXJmb3JtTmV4dE1haW5UaHJlYWRUYXNr
CiAgICAgcmVmKCk7Ci0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZVbmlxdWVJ
REJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaywgdGhpcykpOworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRN
YWluVGhyZWFkVGFzaywgdGhpcykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtTmV4dE1haW5UaHJlYWRUYXNrKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5
bmNNZXNzYQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikK
IHsKICAgICAvLyBUaGUgVUlQcm9jZXNzIGp1c3QgZXhpdGVkLgotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24q
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCiB7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLT5zdG9wKCk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAxNjU3MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbAogICAgIG1f
c3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVz
ZXJ2aW5nT2xkSFRUUEJvZHkobmV3UmVxdWVzdCk7CiAjZW5kaWYKIAotICAgIFJ1bkxvb3A6Om1h
aW4oKS0+ZGlzcGF0Y2goYmluZCgmTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVjZWl2
ZWRSZWRpcmVjdCwgJk5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyKCksIHRoaXMsIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdC51
cmwoKSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZOZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZlZFJlZGlyZWN0LCAmTmV0d29ya1Byb2Nlc3M6OnNoYXJl
ZCgpLm5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIoKSwgdGhpcywgbV9zdWdnZXN0ZWRSZXF1
ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0LnVybCgpKSk7CiAKICAgICBtX3JlcXVlc3QgPSBtX3N1Z2dl
c3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVlc3Q7CiAgICAgbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9y
V2lsbFNlbmRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAxNjU3MTEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIENvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29ubmVjdGlvbjo6U3lu
Y01lc3NhZ2VTdGF0ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN5bmNNZXNz
YWdlU3RhdGU+IGdldE9yQ3JlYXRlKFJ1bkxvb3AqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
eW5jTWVzc2FnZVN0YXRlPiBnZXRPckNyZWF0ZShSdW5Mb29wJik7CiAgICAgflN5bmNNZXNzYWdl
U3RhdGUoKTsKIAogICAgIHZvaWQgd2FrZVVwQ2xpZW50UnVuTG9vcCgpCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMoQ29ubmVjdGlvbiogYWxsb3dl
ZENvbm5lY3Rpb24pOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFN5bmNNZXNzYWdlU3RhdGUo
UnVuTG9vcCopOworICAgIGV4cGxpY2l0IFN5bmNNZXNzYWdlU3RhdGUoUnVuTG9vcCYpOwogCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJ1bkxvb3AqLCBTeW5jTWVzc2FnZVN0YXRlKj4gU3luY01lc3Nh
Z2VTdGF0ZU1hcDsKICAgICBzdGF0aWMgU3luY01lc3NhZ2VTdGF0ZU1hcCYgc3luY01lc3NhZ2VT
dGF0ZU1hcCgpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BhdGNo
TWVzc2FnZUFuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbihD
b25uZWN0aW9uKik7CiAKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CisgICAgUnVuTG9vcCYgbV9y
dW5Mb29wOwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX3dhaXRGb3JTeW5jUmVwbHlTZW1hcGhvcmU7
CiAKICAgICAvLyBQcm90ZWN0cyBtX2RpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc1dvcmtTZXQg
YW5kIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LgpAQCAtMTAx
LDEwICsxMDEsMTAgQEAgcHVibGljOgogfTsKIAogCi1QYXNzUmVmUHRyPENvbm5lY3Rpb246OlN5
bmNNZXNzYWdlU3RhdGU+IENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRl
KFJ1bkxvb3AqIHJ1bkxvb3ApCitQYXNzUmVmUHRyPENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3Rh
dGU+IENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3JlYXRlKFJ1bkxvb3AmIHJ1
bkxvb3ApCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN5bmNNZXNzYWdlU3RhdGVNYXBNdXRl
eCgpKTsKLSAgICBTeW5jTWVzc2FnZVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3luY01l
c3NhZ2VTdGF0ZU1hcCgpLmFkZChydW5Mb29wLCBudWxscHRyKTsKKyAgICBTeW5jTWVzc2FnZVN0
YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmFkZCgmcnVu
TG9vcCwgbnVsbHB0cik7CiAKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXNz
UmVmUHRyPENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU+CiAgICAgcmV0dXJuIHN5bmNNZXNz
YWdlU3RhdGUucmVsZWFzZSgpOwogfQogCi1Db25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpT
eW5jTWVzc2FnZVN0YXRlKFJ1bkxvb3AqIHJ1bkxvb3ApCitDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlOjpTeW5jTWVzc2FnZVN0YXRlKFJ1bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBtX3J1bkxv
b3AocnVuTG9vcCkKIHsKIH0KQEAgLTEyNiw4ICsxMjYsOCBAQCBDb25uZWN0aW9uOjpTeW5jTWVz
c2FnZVN0YXRlOjp+U3luY01lc3NhCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN5bmNNZXNz
YWdlU3RhdGVNYXBNdXRleCgpKTsKICAgICAKLSAgICBBU1NFUlQoc3luY01lc3NhZ2VTdGF0ZU1h
cCgpLmNvbnRhaW5zKG1fcnVuTG9vcCkpOwotICAgIHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5yZW1v
dmUobV9ydW5Mb29wKTsKKyAgICBBU1NFUlQoc3luY01lc3NhZ2VTdGF0ZU1hcCgpLmNvbnRhaW5z
KCZtX3J1bkxvb3ApKTsKKyAgICBzeW5jTWVzc2FnZVN0YXRlTWFwKCkucmVtb3ZlKCZtX3J1bkxv
b3ApOwogCiAgICAgQVNTRVJUKG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3lu
Y1JlcGx5LmlzRW1wdHkoKSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZQogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9kaWRTY2hlZHVsZURpc3BhdGNoTWVzc2Fn
ZXNXb3JrU2V0LmFkZChjb25uZWN0aW9uKS5pc05ld0VudHJ5KQotICAgICAgICAgICAgbV9ydW5M
b29wLT5kaXNwYXRjaChiaW5kKCZTeW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VBbmRS
ZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24sIHRoaXMsIFJlZlB0
cjxDb25uZWN0aW9uPihjb25uZWN0aW9uKSkpOworICAgICAgICAgICAgbV9ydW5Mb29wLmRpc3Bh
dGNoKGJpbmQoJlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZUFuZFJlc2V0RGlkU2No
ZWR1bGVEaXNwYXRjaE1lc3NhZ2VzRm9yQ29ubmVjdGlvbiwgdGhpcywgUmVmUHRyPENvbm5lY3Rp
b24+KGNvbm5lY3Rpb24pKSk7CiAKICAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdh
aXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5kKHN0ZDo6bW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlKSk7CiAgICAgfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3lu
Y01lc3NhZ2VTdGF0ZTo6cHJvY2UKIAogdm9pZCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
OjpkaXNwYXRjaE1lc3NhZ2VzKENvbm5lY3Rpb24qIGFsbG93ZWRDb25uZWN0aW9uKQogewotICAg
IEFTU0VSVChtX3J1bkxvb3AgPT0gUnVuTG9vcDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQoJm1f
cnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIAogICAgIFZlY3RvcjxDb25uZWN0aW9u
QW5kSW5jb21pbmdNZXNzYWdlPiBtZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5j
UmVwbHk7CiAKQEAgLTIwMCwxNyArMjAwLDE3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3Nh
Z2VTdGF0ZTo6ZGlzcGEKICAgICBkaXNwYXRjaE1lc3NhZ2VzKGNvbm5lY3Rpb24pOwogfQogCi1Q
YXNzUmVmUHRyPENvbm5lY3Rpb24+IENvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24o
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDbGllbnQqIGNsaWVudCwgUnVuTG9vcCogY2xpZW50UnVu
TG9vcCkKK1Bhc3NSZWZQdHI8Q29ubmVjdGlvbj4gQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29u
bmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIENsaWVudCogY2xpZW50LCBSdW5Mb29wJiBj
bGllbnRSdW5Mb29wKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29ubmVjdGlvbihpZGVu
dGlmaWVyLCB0cnVlLCBjbGllbnQsIGNsaWVudFJ1bkxvb3ApKTsKIH0KIAotUGFzc1JlZlB0cjxD
b25uZWN0aW9uPiBDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIg
aWRlbnRpZmllciwgQ2xpZW50KiBjbGllbnQsIFJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApCitQYXNz
UmVmUHRyPENvbm5lY3Rpb24+IENvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oSWRl
bnRpZmllciBpZGVudGlmaWVyLCBDbGllbnQqIGNsaWVudCwgUnVuTG9vcCYgY2xpZW50UnVuTG9v
cCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbm5lY3Rpb24oaWRlbnRpZmllciwgZmFs
c2UsIGNsaWVudCwgY2xpZW50UnVuTG9vcCkpOwogfQogCi1Db25uZWN0aW9uOjpDb25uZWN0aW9u
KElkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiBjbGllbnQsIFJ1
bkxvb3AqIGNsaWVudFJ1bkxvb3ApCitDb25uZWN0aW9uOjpDb25uZWN0aW9uKElkZW50aWZpZXIg
aWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiBjbGllbnQsIFJ1bkxvb3AmIGNsaWVu
dFJ1bkxvb3ApCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2lzU2VydmVyKGlzU2Vy
dmVyKQogICAgICwgbV9zeW5jUmVxdWVzdElEKDApCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpzZXRTaG91bGRFeGl0T25TeW5jTWVzcwogCiB2b2lkIENvbm5lY3Rpb246OmFk
ZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgV29ya1F1ZXVlKiB3b3JrUXVldWUsIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciogd29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKQogewotICAgIEFTU0VSVChSdW5Mb29wOjpjdXJyZW50KCkg
PT0gbV9jbGllbnRSdW5Mb29wKTsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV9jbGllbnRSdW5Mb29wKTsKICAgICBBU1NFUlQoIW1faXNDb25uZWN0ZWQpOwogCiAgICAgbV9j
b25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck9uQ29ubmVjdGlvbldvcmtRdWV1ZSwgdGhpcywgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgUmVmUHRyPFdvcmtRdWV1ZT4od29ya1F1ZXVlKSwgUmVmUHRyPFdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlcj4od29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKSkpOwpAQCAtMjYxLDcgKzI2MSw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2UKIAogdm9pZCBDb25u
ZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmN1cnJlbnQoKSA9PSBt
X2NsaWVudFJ1bkxvb3ApOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX2Ns
aWVudFJ1bkxvb3ApOwogCiAgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKGJpbmQoJkNv
bm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck9uQ29ubmVjdGlvbldvcmtR
dWV1ZSwgdGhpcywgbWVzc2FnZVJlY2VpdmVyTmFtZSkpOwogfQpAQCAtNDMxLDcgKzQzMSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGkKIAogc3RkOjp1bmlxdWVf
cHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3Mp
CiB7Ci0gICAgaWYgKFJ1bkxvb3A6OmN1cnJlbnQoKSAhPSBtX2NsaWVudFJ1bkxvb3ApIHsKKyAg
ICBpZiAoJlJ1bkxvb3A6OmN1cnJlbnQoKSAhPSAmbV9jbGllbnRSdW5Mb29wKSB7CiAgICAgICAg
IC8vIE5vIGZsYWdzIGFyZSBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIG1lc3NhZ2VzIHNlbnQg
ZnJvbSBzZWNvbmRhcnkgdGhyZWFkcy4KICAgICAgICAgQVNTRVJUKCFzeW5jU2VuZEZsYWdzKTsK
ICAgICAgICAgcmV0dXJuIHNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQoc3luY1Jl
cXVlc3RJRCwgc3RkOjptb3ZlKGVuY29kZXIpLCB0aW1lb3V0KTsKQEAgLTQ4MCw3ICs0ODAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3RpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlRnJvbVNlY29u
ZGFyeVRocmVhZCh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCkKIHsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpICE9IG1fY2xpZW50UnVuTG9vcCk7CisgICAg
QVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgIT0gJm1fY2xpZW50UnVuTG9vcCk7CiAKICAgICBp
ZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NDgsNyArNTQ4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICAgICAgLy8gRklYTUU6IEFsdGhvdWdoIHdlIHJ1biBmb3JldmVyLCBh
bnkgZXZlbnRzIGluY29taW5nIHdpbGwgY2F1c2UgdXMgdG8gZHJvcCBvdXQgYW5kIGV4aXQgb3V0
LiBUaGlzIGhvd2V2ZXIgZG9lc24ndAogICAgICAgICAgICAgLy8gYWNjb3VudCBmb3IgYSB0aW1l
b3V0IHZhbHVlIHBhc3NlZCBpbi4gVGltZW91dCBpcyBhbHdheXMgTm9UaW1lb3V0IGluIHRoZXNl
IGNhc2VzLCBidXQgdGhhdCBjb3VsZCBjaGFuZ2UuCi0gICAgICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCktPnJ1bkZvckR1cmF0aW9uKDFlMTApOworICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLnJ1bkZvckR1cmF0aW9uKDFlMTApOwogICAgICAgICAgICAgdGltZWRPdXQgPSBjdXJyZW50
VGltZSgpID49IGFic29sdXRlVGltZTsKICNlbmRpZgogICAgICAgICB9IGVsc2UKQEAgLTYxMywx
MSArNjEzLDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSgKICAg
ICAgICAgICAgIENTdHJpbmcgbWVzc2FnZVJlY2VpdmVyTmFtZSA9ICI8dW5rbm93biBtZXNzYWdl
PiI7CiAgICAgICAgICAgICBDU3RyaW5nIG1lc3NhZ2VOYW1lID0gU3RyaW5nOjpmb3JtYXQoIjxt
ZXNzYWdlIGxlbmd0aDogJXp1IGJ5dGVzPiIsIG1lc3NhZ2UtPmxlbmd0aCgpKS51dGY4KCk7CiAK
LSAgICAgICAgICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UsIHRoaXMsIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1lc3NhZ2VOYW1lKSk7CisgICAgICAgICAgICBtX2NsaWVudFJ1bkxvb3AuZGlzcGF0Y2go
YmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UsIHRoaXMs
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBtX2NsaWVudFJ1bkxvb3AtPmRpc3BhdGNoKGJpbmQoJkNv
bm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlLCB0aGlzLCBtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmcoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUo
KS50b1N0cmluZygpKSk7CisgICAgICAgIG1fY2xpZW50UnVuTG9vcC5kaXNwYXRjaChiaW5kKCZD
b25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSwgdGhpcywgbWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5nKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1l
KCkudG9TdHJpbmcoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2
LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UoKQogICAgIGlmIChtX2Rp
ZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spCiAgICAgICAgIG1fZGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayh0aGlzKTsKIAotICAgIG1fY2xpZW50UnVuTG9v
cC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaENvbm5lY3Rpb25EaWRD
bG9zZSwgdGhpcykpOworICAgIG1fY2xpZW50UnVuTG9vcC5kaXNwYXRjaChXVEY6OmJpbmQoJkNv
bm5lY3Rpb246OmRpc3BhdGNoQ29ubmVjdGlvbkRpZENsb3NlLCB0aGlzKSk7CiB9CiAKIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hDb25uZWN0aW9uRGlkQ2xvc2UoKQpAQCAtNzQ1LDcgKzc0NSw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShNZXMKIAogdm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lU3RyaW5nLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZVN0cmlu
ZykKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fY2xpZW50UnVuTG9vcCk7CiAK
ICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkBAIC03NjgsNyArNzY4LDcgQEAg
dm9pZCBDb25uZWN0aW9uOjplbnF1ZXVlSW5jb21pbmdNZXNzYWdlKAogICAgICAgICBtX2luY29t
aW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bW92ZShpbmNvbWluZ01lc3NhZ2UpKTsKICAgICB9CiAK
LSAgICBtX2NsaWVudFJ1bkxvb3AtPmRpc3BhdGNoKFdURjo6YmluZCgmQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hPbmVNZXNzYWdlLCB0aGlzKSk7CisgICAgbV9jbGllbnRSdW5Mb29wLmRpc3BhdGNoKFdU
Rjo6YmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlLCB0aGlzKSk7CiB9CiAKIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQpA
QCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKCkK
IAogdm9pZCBDb25uZWN0aW9uOjp3YWtlVXBSdW5Mb29wKCkKIHsKLSAgICBtX2NsaWVudFJ1bkxv
b3AtPndha2VVcCgpOworICAgIG1fY2xpZW50UnVuTG9vcC53YWtlVXAoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw4ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIENvbm5lY3Rpb246OlNvY2tldFBhaXIgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7
CiAjZW5kaWYKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0ZVNlcnZl
ckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV1RGOjpSdW5Mb29wKiBjbGllbnRSdW5M
b29wKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25u
ZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlv
bihJZGVudGlmaWVyLCBDbGllbnQqLCBXVEY6OlJ1bkxvb3AmIGNsaWVudFJ1bkxvb3ApOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0ZUNsaWVudENvbm5lY3Rpb24oSWRl
bnRpZmllciwgQ2xpZW50KiwgV1RGOjpSdW5Mb29wJiBjbGllbnRSdW5Mb29wKTsKICAgICB+Q29u
bmVjdGlvbigpOwogCiAgICAgQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBi
b29sIGlzU2VydmVyLCBDbGllbnQqLCBXVEY6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOworICAg
IENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiwgV1RGOjpSdW5M
b29wJiBjbGllbnRSdW5Mb29wKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlm
aWVyKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogICAgIApAQCAtMjIzLDcgKzIy
Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNDb25uZWN0ZWQ7CiAgICAgUmVmUHRyPFdv
cmtRdWV1ZT4gbV9jb25uZWN0aW9uUXVldWU7Ci0gICAgV1RGOjpSdW5Mb29wKiBtX2NsaWVudFJ1
bkxvb3A7CisgICAgV1RGOjpSdW5Mb29wJiBtX2NsaWVudFJ1bkxvb3A7CiAKICAgICBIYXNoTWFw
PFN0cmluZ1JlZmVyZW5jZSwgc3RkOjpwYWlyPFJlZlB0cjxXb3JrUXVldWU+LCBSZWZQdHI8V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyPj4+IG1fd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyczsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE2NTcx
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGlt
ZXJGaXJlZAogCiB2b2lkIENoaWxkUHJvY2Vzczo6c3RvcFJ1bkxvb3AoKQogewotICAgIFJ1bkxv
b3A6Om1haW4oKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CiB9CiAKIHZv
aWQgQ2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRl
KE5QT2JqZQogICAgIC8vIHRoYXQgaXMga25vd24gdG8gYmUgbWlzdXNlZCBkdXJpbmcgcGx1Z2lu
IHRlYXJkb3duLCBhbmQgdG8gbm90IGJlIGNvbmNlcm5lZCBhYm91dCBjaGFuZ2UgaW4gYmVoYXZp
b3IgaWYgdGhpcwogICAgIC8vIG9jY3VyZWQgYXQgYW55IG90aGVyIHRpbWUuCiAgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQo
Jk5QT2JqZWN0UHJveHk6Ok5QX0RlYWxsb2NhdGUsIG5wT2JqZWN0KSk7CisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRlLCBu
cE9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xh
dW5jaGVyRWZsLmNwcAkocmV2aXNpb24gMTY1NzExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQog
ICAgICAgICBjbG9zZShzb2NrZXRzWzBdKTsKICAgICAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9
IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBt
ZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzcywg
dGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBtX3Byb2Nl
c3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRo
ZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9v
cDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5j
aGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHNvY2tldHNbMV0pKTsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5p
c2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFd
KSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNzKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAxNjU3MTEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3RUb1NlcnZpY2UoY29u
c3QgUHJvY2UKICAgICAgICAgICAgIC8vIEFuZCB0aGUgcmVjZWl2ZSByaWdodC4KICAgICAgICAg
ICAgIG1hY2hfcG9ydF9tb2RfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBN
QUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgLTEpOwogCi0gICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCktPmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0aGF0
LCAwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSkpOworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9u
LCB0aGF0LCAwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcGx5
LCAibWVzc2FnZS1uYW1lIiksICJwcm9jZXNzLWZpbmlzaGVkLWxhdW5jaGluZyIpKTsKQEAgLTI0
MCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBjb25uZWN0VG9TZXJ2aWNlKGNvbnN0IFByb2NlCiAg
ICAgICAgICAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllciA9IHhwY19jb25uZWN0aW9uX2dldF9w
aWQoY29ubmVjdGlvbik7CiAKICAgICAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGlu
ZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0LCBjb25uZWN0aW9uKSkpOworICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0
aW9uLCB0aGF0LCBwcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KGxpc3RlbmluZ1BvcnQsIGNvbm5lY3Rpb24pKSk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGF0
LT5kZXJlZigpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyBib29sIHRyeVByZWV4aXN0aW5n
UHJvY2Vzcyhjb25zdAogICAgIH0KICAgICAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hp
bmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBS
dW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1
bmN0aW9uLCB0aGF0LCBwcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyKGxpc3RlbmluZ1BvcnQpKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQo
ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0aGF0LCBwcm9jZXNzSWRlbnRpZmll
ciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTQ5OCw3ICs0OTgsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQcm9j
ZXNzKGNvbnN0IFByb2Nlc3NMCiAgICAgfQogCiAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNo
aW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAg
UnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NG
dW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihsaXN0ZW5pbmdQb3J0KSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5k
KGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZp
ZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSkpOwogfQogCiB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lv
biAxNjU3MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMSwxNCArNDIxLDE0IEBAIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OnByb2Nlc3NXaWxsQ2xvc2VDb24KICAgICBtX3F1ZXVlLT5kaXNwYXRjaChiaW5k
KCZTdG9yYWdlTWFuYWdlcjo6aW52YWxpZGF0ZUNvbm5lY3Rpb25JbnRlcm5hbCwgdGhpcywgUmVm
UHRyPElQQzo6Q29ubmVjdGlvbj4od2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkpKSk7CiB9
CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnMoRnVuY3Rpb25EaXNwYXRjaGVyKiBj
YWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3Qg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9yaWdpbnMs
IHZvaWQqIGNvbnRleHQpKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2lucyhGdW5jdGlv
bkRpc3BhdGNoZXImIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNh
bGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNl
Y3VyaXR5T3JpZ2lucywgdm9pZCogY29udGV4dCkpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
YmluZCgmU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnNJbnRlcm5hbCwgdGhpcywgUmVmUHRyPEZ1
bmN0aW9uRGlzcGF0Y2hlcj4oY2FsbGJhY2tEaXNwYXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2sp
KTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2lu
c0ludGVybmFsLCB0aGlzLCBSZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPigmY2FsbGJhY2tEaXNw
YXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6
Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlz
cGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8TG9j
YWxTdG9yYWdlRGV0YWlscz4mIHN0b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250ZXh0KSkKK3ZvaWQg
U3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oRnVuY3Rpb25EaXNwYXRj
aGVyJiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjayko
Y29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+JiBzdG9yYWdlRGV0YWlscywgdm9pZCog
Y29udGV4dCkpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goYmluZCgmU3RvcmFnZU1hbmFnZXI6
OmdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5JbnRlcm5hbCwgdGhpcywgUmVmUHRyPEZ1bmN0aW9u
RGlzcGF0Y2hlcj4oY2FsbGJhY2tEaXNwYXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsKKyAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZURldGFp
bHNCeU9yaWdpbkludGVybmFsLCB0aGlzLCBSZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPigmY2Fs
bGJhY2tEaXNwYXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYy
LDggQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgYSBjb250ZXh0ICsgQyBm
dW5jdGlvbiwgdGhpcyBzaG91bGQgdGFrZSBhIFdURjo6RnVuY3Rpb24sIGJ1dCB3ZSBjdXJyZW50
bHkgZG9uJ3QKICAgICAvLyBzdXBwb3J0IGFyZ3VtZW50cyBpbiBmdW5jdGlvbnMuCi0gICAgdm9p
ZCBnZXRPcmlnaW5zKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lk
KiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiYsIHZvaWQqIGNvbnRleHQpKTsKLSAgICB2b2lkIGdldFN0b3JhZ2VE
ZXRhaWxzQnlPcmlnaW4oRnVuY3Rpb25EaXNwYXRjaGVyKiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZv
aWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURl
dGFpbHM+Jiwgdm9pZCogY29udGV4dCkpOworICAgIHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlvbkRp
c3BhdGNoZXImIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxi
YWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mLCB2b2lk
KiBjb250ZXh0KSk7CisgICAgdm9pZCBnZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKEZ1bmN0aW9u
RGlzcGF0Y2hlciYgY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2Fs
bGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VEZXRhaWxzPiYsIHZvaWQqIGNvbnRleHQp
KTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMTY1
NzExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTczLDcgKzE1NzMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnVu
cHJvdGVjdFBsdWdpbkZyb21EZXN0CiAgICAgLy8gdGhlIGRlc3Ryb3llZCBvYmplY3QgaGlnaGVy
IG9uIHRoZSBzdGFjay4gVG8gcHJldmVudCB0aGlzLCBpZiB0aGUgcGx1Zy1pbiBoYXMKICAgICAv
LyBvbmx5IG9uZSByZW1haW5pbmcgcmVmZXJlbmNlLCBjYWxsIGRlcmVmKCkgYXN5bmNocm9ub3Vz
bHkuCiAgICAgaWYgKGhhc09uZVJlZigpKQotICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3Bh
dGNoKGJpbmQoZGVyZWZQbHVnaW5WaWV3LCB0aGlzKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChiaW5kKGRlcmVmUGx1Z2luVmlldywgdGhpcykpOwogICAgIGVsc2UKICAgICAg
ICAgZGVyZWYoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkocmV2aXNpb24g
MTY1NzExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46OnBvcFBvcHVwc0VuYWJsZWRTdGEKIAogdm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGx1Z2luVGhyZWFkQXN5bmNDYWxsKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiB1
c2VyRGF0YSkKIHsKLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKFdURjo6YmluZCgmTmV0
c2NhcGVQbHVnaW46OmhhbmRsZVBsdWdpblRocmVhZEFzeW5jQ2FsbCwgdGhpcywgZnVuY3Rpb24s
IHVzZXJEYXRhKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURjo6YmluZCgmTmV0
c2NhcGVQbHVnaW46OmhhbmRsZVBsdWdpblRocmVhZEFzeW5jQ2FsbCwgdGhpcywgZnVuY3Rpb24s
IHVzZXJEYXRhKSk7CiB9CiAgICAgCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpoYW5kbGVQbHVnaW5U
aHJlYWRBc3luY0NhbGwodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIHVzZXJEYXRhKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlci5jcHAJKHJldmlzaW9uIDE2NTcxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAs
NyArMTQwLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0XwogICAg
IFVOVVNFRF9QQVJBTShjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2VuZGlmCiAKLSAgICBSdW5M
b29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVl
bEV2ZW50LCB0aGlzLCBwYWdlSUQsIHdoZWVsRXZlbnQpKTsKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goYmluZCgmRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQsIHRoaXMs
IHBhZ2VJRCwgd2hlZWxFdmVudCkpOwogfQogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRl
RGlzcGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gMTY1NzExKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVy
Ojp2aXNpYmxlQ29udGVuCiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFNdXRleCk7
CiAgICAgICAgIG1fbGF0ZXN0VXBkYXRlLnNldChwYWdlSUQsIHZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8pOwogICAgIH0KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlZp
ZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSwgdGhp
cykpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZWaWV3VXBkYXRlRGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUsIHRoaXMpKTsKIH0KIAogdm9p
ZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUo
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMTY1NzExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODUsNyArODg1LDcgQEAgdm9pZCBXZWJQ
YWdlOjpjbG9zZSgpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlV2ViUGFnZShtX3Bh
Z2VJRCk7CiAKICAgICBpZiAoaXNSdW5uaW5nTW9kYWwpCi0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS0+c3RvcCgpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnRyeUNsb3NlKCkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTcxMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTE2ICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgUnVuTG9vcCBvYmplY3RzIHRocm91
Z2ggcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3QgdGhlIGNvZGUgYWNjb3JkaW5nbHkgbm93
IHRoYXQgUnVuTG9vcDo6Y3VycmVudCgpIGFuZCBSdW5Mb29wOjptYWluKCkKKyAgICAgICAgcmV0
dXJuIFJ1bkxvb3AgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwOgorICAg
ICAgICAobG9hZGVkQ2FsbGJhY2spOgorICAgICAgICAoY2xpY2tlZENhbGxiYWNrKToKKwogMjAx
NC0wMy0xNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS11bQ01ha2VdIEJ1aWxkIHdpdGggLWZuby1ydHRpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTURPTVdpbmRvd1Rlc3QuY3Bw
CShyZXZpc2lvbiAxNjU3MTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvRE9NRE9NV2luZG93VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gbG9hZGVkQ2FsbGJhY2soV2ViS2l0RE9NCiAgICAgdGVzdC0+bm90
aWZ5KCJsb2FkZWQiLCAiIik7CiAKICAgICAvLyBTdG9wIHRoZSBsb29wIGFuZCBsZXQgdGVzdFNp
Z25hbHMoKSBvciB0ZXN0RGlzcGF0Y2hFdmVudCgpIGNvbnRpbnVlIGl0cyBjb3Vyc2UKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgp
OwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBnYm9v
bGVhbiBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE8KICAgICB0ZXN0LT5ub3RpZnkoImZpbmlzaCIs
ICIiKTsKIAogICAgIC8vIFN0b3AgdGhlIGxvb3AgYW5kIGxldCB0ZXN0U2lnbmFscygpIG9yIHRl
c3REaXNwYXRjaEV2ZW50KCkgY29udGludWUgaXRzIGNvdXJzZQotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiAKICAgICByZXR1
cm4gRkFMU0U7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226914</attachid>
            <date>2014-03-17 07:40:58 -0700</date>
            <delta_ts>2014-03-17 11:48:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-130313-20140317074035.patch</filename>
            <type>text/plain</type>
            <size>41506</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjU3MzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE0LTAzLTE3ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgUnVuTG9vcCBvYmplY3RzIHRocm91Z2gg
cmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgIE1ha2UgUnVuTG9vcDo6Y3VycmVudCgpIGFuZCBSdW5Mb29w
OjptYWluKCkgcmV0dXJuIGEgUnVuTG9vcCByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBh
IHBvaW50ZXIuIFJ1bkxvb3A6OkhvbGRlciBub3cgdXNlcyBhIFJlZjxSdW5Mb29wPiBtZW1iZXIu
IFRpbWVyIGFuZCBUaW1lckJhc2UKKyAgICAgICAgY29uc3RydWN0b3JzIHRha2UgaW4gYSBSdW5M
b29wIHJlZmVyZW5jZSwgd2l0aCBUaW1lckJhc2Ugbm93IHN0b3JpbmcgYSBSdW5Mb29wCisgICAg
ICAgIHJlZmVyZW5jZSBtZW1iZXIgaW5zdGVhZCBvZiBhIHBvaW50ZXIuIFBsYXRmb3JtLXNwZWNp
ZmljIGJpdHMgb2YgdGhlIFJ1bkxvb3AKKyAgICAgICAgY2xhc3MgYXJlIHVwZGF0ZWQgYWNjb3Jk
aW5nbHkuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OkhvbGRlcjo6SG9sZGVyKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6SG9sZGVyOjpydW5M
b29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6Y3VycmVudCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Om1h
aW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppc01haW4pOgorICAgICAgICAqIHd0Zi9SdW5M
b29wLmg6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyOjpUaW1lcik6CisgICAgICAgICog
d3RmL2NmL1J1bkxvb3BDRi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgICogd3RmL2VmbC9SdW5Mb29wRWZs
LmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAg
ICAgICAqIHd0Zi9ndGsvUnVuTG9vcEd0ay5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1
bik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgICogd3RmL3dpbi9S
dW5Mb29wV2luLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJh
c2UpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
VGltZXJCYXNlOjppc0FjdGl2ZSk6CisKIDIwMTQtMDMtMTcgIFRhbWFzIEdlcmdlbHkgIDx0Z2Vy
Z2VseS51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIE9uZSBtb3JlIGZp
eCBhZnRlciByMTY1NzI1LgpJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAJKHJldmlzaW9uIDE2NTczMSkKKysr
IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywzOSArMzcs
MzkgQEAgc3RhdGljIFJ1bkxvb3AqIHNfbWFpblJ1bkxvb3A7CiBjbGFzcyBSdW5Mb29wOjpIb2xk
ZXIgewogcHVibGljOgogICAgIEhvbGRlcigpCi0gICAgICAgIDogbV9ydW5Mb29wKGFkb3B0UmVm
KG5ldyBSdW5Mb29wKSkKKyAgICAgICAgOiBtX3J1bkxvb3AoYWRvcHRSZWYoKm5ldyBSdW5Mb29w
KSkKICAgICB7CiAgICAgfQogCi0gICAgUnVuTG9vcCogcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJu
IG1fcnVuTG9vcC5nZXQoKTsgfQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1
bkxvb3AuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UnVuTG9vcD4gbV9ydW5Mb29w
OworICAgIFJlZjxSdW5Mb29wPiBtX3J1bkxvb3A7CiB9OwogCiB2b2lkIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpCiB7CiAgICAgaWYgKHNfbWFpblJ1bkxvb3ApCiAgICAgICAgIHJl
dHVybjsKLSAgICBzX21haW5SdW5Mb29wID0gUnVuTG9vcDo6Y3VycmVudCgpOworICAgIHNfbWFp
blJ1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgpOwogfQogCi1SdW5Mb29wKiBSdW5Mb29wOjpj
dXJyZW50KCkKK1J1bkxvb3AmIFJ1bkxvb3A6OmN1cnJlbnQoKQogewogICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlRocmVhZFNwZWNpZmljPFJ1bkxvb3A6OkhvbGRlcj4s
IHJ1bkxvb3BIb2xkZXIsICgpKTsKICAgICByZXR1cm4gcnVuTG9vcEhvbGRlci0+cnVuTG9vcCgp
OwogfQogCi1SdW5Mb29wKiBSdW5Mb29wOjptYWluKCkKK1J1bkxvb3AmIFJ1bkxvb3A6Om1haW4o
KQogewogICAgIEFTU0VSVChzX21haW5SdW5Mb29wKTsKLSAgICByZXR1cm4gc19tYWluUnVuTG9v
cDsKKyAgICByZXR1cm4gKnNfbWFpblJ1bkxvb3A7CiB9CiAKIGJvb2wgUnVuTG9vcDo6aXNNYWlu
KCkKIHsKICAgICBBU1NFUlQoc19tYWluUnVuTG9vcCk7Ci0gICAgcmV0dXJuIHNfbWFpblJ1bkxv
b3AgPT0gUnVuTG9vcDo6Y3VycmVudCgpOworICAgIHJldHVybiBzX21haW5SdW5Mb29wID09ICZS
dW5Mb29wOjpjdXJyZW50KCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsoKQpJbmRl
eDogU291cmNlL1dURi93dGYvUnVuTG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1J1bkxvb3AuaAkocmV2aXNpb24gMTY1NzMxKQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMTQgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBj
bGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUnVuTG9vcCk7CiBwdWJsaWM6CiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgZnJv
bSB0aGUgbWFpbiB0aHJlYWQgKGV4Y2VwdCBmb3IgdGhlIE1hYyBwbGF0Zm9ybSwgd2hlcmUgaXQK
ICAgICAvLyBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCkuCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSdW5Mb29wKiBjdXJyZW50KCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSdW5Mb29wKiBtYWluKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSdW5Mb29wJiBjdXJyZW50KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
dW5Mb29wJiBtYWluKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzTWFp
bigpOwogICAgIH5SdW5Mb29wKCk7CiAKQEAgLTcwLDcgKzcxLDcgQEAgcHVibGljOgogICAgIGNs
YXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFRpbWVyQmFzZShSdW5Mb29w
Kik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBUaW1lckJhc2UoUnVuTG9v
cCYpOwogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+VGltZXJCYXNlKCk7CiAK
ICAgICAgICAgdm9pZCBzdGFydFJlcGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2YWwpIHsgc3Rh
cnQocmVwZWF0SW50ZXJ2YWwsIHRydWUpOyB9CkBAIC04NCw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICBwcml2YXRlOgogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChkb3VibGUg
bmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpOwogCi0gICAgICAgIFJ1bkxvb3AqIG1fcnVu
TG9vcDsKKyAgICAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwogCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKFJ1bkxvb3AqLCB1aW50NjRfdCBJRCk7CkBA
IC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiB2
b2lkIChUaW1lckZpcmVkQ2xhc3M6OipUaW1lckZpcmVkRnVuY3Rpb24pKCk7CiAKLSAgICAgICAg
VGltZXIoUnVuTG9vcCogcnVuTG9vcCwgVGltZXJGaXJlZENsYXNzKiBvLCBUaW1lckZpcmVkRnVu
Y3Rpb24gZikKKyAgICAgICAgVGltZXIoUnVuTG9vcCYgcnVuTG9vcCwgVGltZXJGaXJlZENsYXNz
KiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKICAgICAgICAgICAgIDogVGltZXJCYXNlKHJ1bkxv
b3ApCiAgICAgICAgICAgICAsIG1fb2JqZWN0KG8pCiAgICAgICAgICAgICAsIG1fZnVuY3Rpb24o
ZikKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMTY1NzMxKQorKysgU291
cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTQgKzY1
LDE0IEBAIHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKIAogdm9pZCBSdW5Mb29wOjpydW4oKQogewot
ICAgIGN1cnJlbnQoKS0+bV9uZXN0aW5nTGV2ZWwrKzsKKyAgICBjdXJyZW50KCkubV9uZXN0aW5n
TGV2ZWwrKzsKICAgICAKICAgICB7CiAgICAgICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwogICAg
ICAgICBDRlJ1bkxvb3BSdW4oKTsKICAgICB9CiAgICAgCi0gICAgY3VycmVudCgpLT5tX25lc3Rp
bmdMZXZlbC0tOworICAgIGN1cnJlbnQoKS5tX25lc3RpbmdMZXZlbC0tOwogfQogCiB2b2lkIFJ1
bkxvb3A6OnN0b3AoKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
dGltZXJGaXJlZChDRlJ1CiAgICAgdGltZXItPmZpcmVkKCk7CiB9CiAKLVJ1bkxvb3A6OlRpbWVy
QmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCitSdW5Mb29wOjpUaW1lckJhc2U6OlRp
bWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiB7CiB9
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJs
ZSBuZQogICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAw
LCAwIH07CiAgICAgQ0ZUaW1lSW50ZXJ2YWwgcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBuZXh0
RmlyZUludGVydmFsIDogMDsKICAgICBtX3RpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG5l
eHRGaXJlSW50ZXJ2YWwsIHJlcGVhdEludGVydmFsLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4
dCkpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgpLCBt
X3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9vcEFkZFRp
bWVyKG1fcnVuTG9vcC5tX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9lZmwvUnVuTG9vcEVmbC5jcHAJKHJldmlzaW9uIDE2NTczMSkKKysrIFNvdXJjZS9X
VEYvd3RmL2VmbC9SdW5Mb29wRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsOCArODMsOSBA
QCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiAgICAgfQogfQogCi1SdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wKikKLSAgICA6IG1fdGltZXIoMCkKK1J1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkK
KyAgICAsIG1fdGltZXIoMCkKICAgICAsIG1faXNSZXBlYXRpbmcoZmFsc2UpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9ndGsvUnVuTG9vcEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvZ3RrL1J1bkxvb3BHdGsuY3BwCShyZXZpc2lvbiAxNjU3MzEpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9ndGsvUnVuTG9vcEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDgg
QEAgUnVuTG9vcDo6flJ1bkxvb3AoKQogCiB2b2lkIFJ1bkxvb3A6OnJ1bigpCiB7Ci0gICAgUnVu
TG9vcCogbWFpblJ1bkxvb3AgPSBSdW5Mb29wOjpjdXJyZW50KCk7Ci0gICAgR01haW5Mb29wKiBp
bm5lcm1vc3RMb29wID0gbWFpblJ1bkxvb3AtPmlubmVybW9zdExvb3AoKTsKKyAgICBSdW5Mb29w
JiBtYWluUnVuTG9vcCA9IFJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICBHTWFpbkxvb3AqIGlubmVy
bW9zdExvb3AgPSBtYWluUnVuTG9vcC5pbm5lcm1vc3RMb29wKCk7CiAgICAgaWYgKCFnX21haW5f
bG9vcF9pc19ydW5uaW5nKGlubmVybW9zdExvb3ApKSB7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1
bihpbm5lcm1vc3RMb29wKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjIsOSArNjIsOSBAQCB2b2lk
IFJ1bkxvb3A6OnJ1bigpCiAKICAgICAvLyBDcmVhdGUgYW5kIHJ1biBhIG5lc3RlZCBsb29wIGlm
IHRoZSBpbm5lcm1vc3Qgb25lIHdhcyBhbHJlYWR5IHJ1bm5pbmcuCiAgICAgR01haW5Mb29wKiBu
ZXN0ZWRNYWluTG9vcCA9IGdfbWFpbl9sb29wX25ldygwLCBGQUxTRSk7Ci0gICAgbWFpblJ1bkxv
b3AtPnB1c2hOZXN0ZWRNYWluTG9vcChuZXN0ZWRNYWluTG9vcCk7CisgICAgbWFpblJ1bkxvb3Au
cHVzaE5lc3RlZE1haW5Mb29wKG5lc3RlZE1haW5Mb29wKTsKICAgICBnX21haW5fbG9vcF9ydW4o
bmVzdGVkTWFpbkxvb3ApOwotICAgIG1haW5SdW5Mb29wLT5wb3BOZXN0ZWRNYWluTG9vcCgpOwor
ICAgIG1haW5SdW5Mb29wLnBvcE5lc3RlZE1haW5Mb29wKCk7CiB9CiAKIEdNYWluTG9vcCogUnVu
TG9vcDo6aW5uZXJtb3N0TG9vcCgpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSdW5Mb29wOjp3
YWtlVXAoKQogICAgIGdfbWFpbl9jb250ZXh0X3dha2V1cChtX3J1bkxvb3BDb250ZXh0LmdldCgp
KTsKIH0KIAotUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkK
K1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBt
X3J1bkxvb3AocnVuTG9vcCkKICAgICAsIG1fdGltZXJTb3VyY2UoMCkKIHsKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIGZpCiAgICAgbV90
aW1lclNvdXJjZSA9IGFkb3B0R1JlZihnX3RpbWVvdXRfc291cmNlX25ldyhzdGF0aWNfY2FzdDxn
dWludD4oZmlyZUludGVydmFsICogMTAwMCkpKTsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0
OwogICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3RpbWVyU291cmNlLmdldCgpLCByZWludGVy
cHJldF9jYXN0PEdTb3VyY2VGdW5jPigmUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkQ2Fs
bGJhY2spLCB0aGlzLCAwKTsKLSAgICBnX3NvdXJjZV9hdHRhY2gobV90aW1lclNvdXJjZS5nZXQo
KSwgbV9ydW5Mb29wLT5tX3J1bkxvb3BDb250ZXh0LmdldCgpKTsKKyAgICBnX3NvdXJjZV9hdHRh
Y2gobV90aW1lclNvdXJjZS5nZXQoKSwgbV9ydW5Mb29wLm1fcnVuTG9vcENvbnRleHQuZ2V0KCkp
OwogfQogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2lu
L1J1bkxvb3BXaW4uY3BwCShyZXZpc2lvbiAxNjU3MzEpCisrKyBTb3VyY2UvV1RGL3d0Zi93aW4v
UnVuTG9vcFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMg
dWludDY0X3QgZ2VuZXJhdGVUaW1lcklEKCkKICAgICByZXR1cm4gdW5pcXVlVGltZXJJRCsrOwog
fQogCi1SdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorUnVu
TG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVu
TG9vcChydW5Mb29wKQogICAgICwgbV9JRChnZW5lcmF0ZVRpbWVySUQoKSkKICAgICAsIG1faXNS
ZXBlYXRpbmcoZmFsc2UpCkBAIC0xNTQsMjMgKzE1NCwyMyBAQCBSdW5Mb29wOjpUaW1lckJhc2U6
On5UaW1lckJhc2UoKQogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBuZXh0
RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKIHsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0
OwotICAgIG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuc2V0KG1fSUQsIHRoaXMpOwotICAgIDo6
U2V0VGltZXIobV9ydW5Mb29wLT5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBtX0lELCBuZXh0Rmly
ZUludGVydmFsICogMTAwMCwgMCk7CisgICAgbV9ydW5Mb29wLm1fYWN0aXZlVGltZXJzLnNldCht
X0lELCB0aGlzKTsKKyAgICA6OlNldFRpbWVyKG1fcnVuTG9vcC5tX3J1bkxvb3BNZXNzYWdlV2lu
ZG93LCBtX0lELCBuZXh0RmlyZUludGVydmFsICogMTAwMCwgMCk7CiB9CiAKIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKLSAgICBUaW1lck1hcDo6aXRlcmF0b3IgaXQgPSBtX3J1
bkxvb3AtPm1fYWN0aXZlVGltZXJzLmZpbmQobV9JRCk7Ci0gICAgaWYgKGl0ID09IG1fcnVuTG9v
cC0+bV9hY3RpdmVUaW1lcnMuZW5kKCkpCisgICAgVGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
dW5Mb29wLm1fYWN0aXZlVGltZXJzLmZpbmQobV9JRCk7CisgICAgaWYgKGl0ID09IG1fcnVuTG9v
cC5tX2FjdGl2ZVRpbWVycy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9ydW5Mb29w
LT5tX2FjdGl2ZVRpbWVycy5yZW1vdmUoaXQpOwotICAgIDo6S2lsbFRpbWVyKG1fcnVuTG9vcC0+
bV9ydW5Mb29wTWVzc2FnZVdpbmRvdywgbV9JRCk7CisgICAgbV9ydW5Mb29wLm1fYWN0aXZlVGlt
ZXJzLnJlbW92ZShpdCk7CisgICAgOjpLaWxsVGltZXIobV9ydW5Mb29wLm1fcnVuTG9vcE1lc3Nh
Z2VXaW5kb3csIG1fSUQpOwogfQogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUo
KSBjb25zdAogewotICAgIHJldHVybiBtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmNvbnRhaW5z
KG1fSUQpOworICAgIHJldHVybiBtX3J1bkxvb3AubV9hY3RpdmVUaW1lcnMuY29udGFpbnMobV9J
RCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1
NzMxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNzIgQEAKKzIwMTQtMDMtMTcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgorCisgICAgICAgIFVzZSBSdW5Mb29wIG9iamVjdHMgdGhyb3VnaCByZWZlcmVuY2VzIGluc3Rl
YWQgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDMxMworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAg
ICAgICAgQWRqdXN0IHRoZSBjb2RlIGFjY29yZGluZ2x5IG5vdyB0aGF0IFJ1bkxvb3A6OmN1cnJl
bnQoKSBhbmQgUnVuTG9vcDo6bWFpbigpCisgICAgICAgIHJldHVybiBSdW5Mb29wIHJlZmVyZW5j
ZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRh
YmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdE1h
aW5UaHJlYWRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpTeW5jTWVzc2FnZVN0YXRlKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6flN5bmNNZXNzYWdlU3RhdGUp
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0
ZTo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNl
cnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRD
b25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcik6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgIChJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OmNvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZW5xdWV1ZUluY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Ondha2VV
cFJ1bkxvb3ApOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcDoKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogU2hhcmVkL0No
aWxkUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6c3RvcFJ1bkxv
b3ApOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
cm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0
VG9TZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6dHJ5UHJlZXhpc3RpbmdQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbHVnaW5UaHJlYWRB
c3luY0NhbGwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmNsb3NlKToKKwogMjAxNC0wMy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBSZXN0b3JlIGN1cnNvciB3aGVu
IG1vdmluZyBtb3VzZSBpbnRvIHdlYnZpZXcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNjU3MzEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDEyIEBAIGJvb2wgRGF0YWJhc2VQcm9jZXNzOjpzaG91
bGRUZXJtaW5hdGUoKQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uKikKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuc3RvcCgpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSkKIHsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwogfQogCiBQYXNzUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpJbmRleDogU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9VbmlxdWVJREJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDE2NTczMSkKKysrIFNvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg1LDcgKzEwODUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
b3N0TWFpblRocmVhZFRhCiAKICAgICAvLyBCYWxhbmNlZCBieSBhbiBhZG9wdFJlZigpIGluIDo6
cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzawogICAgIHJlZigpOwotICAgIFJ1bkxvb3A6Om1haW4o
KS0+ZGlzcGF0Y2goYmluZCgmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVh
ZFRhc2ssIHRoaXMpKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgmVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVhZFRhc2ssIHRoaXMpKTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaygpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAxNjU3MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2EKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiopCiB7CiAgICAgLy8gVGhlIFVJUHJvY2VzcyBqdXN0IGV4
aXRlZC4KLSAgICBSdW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlKQogewotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3RvcCgpOworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENy
ZWF0ZURvd25sb2FkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTY1NzMxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZVdpbGwKICAgICBtX3N1Z2dlc3RlZFJlcXVlc3RGb3JXaWxsU2VuZFJlcXVl
c3QudXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KG5ld1JlcXVlc3QpOwog
I2VuZGlmCiAKLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJk5ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLCB0aGlzLCBtX3N1Z2dlc3RlZFJl
cXVlc3RGb3JXaWxsU2VuZFJlcXVlc3QudXJsKCkpKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goYmluZCgmTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVjZWl2ZWRSZWRpcmVj
dCwgJk5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVy
KCksIHRoaXMsIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdC51cmwoKSkpOwog
CiAgICAgbV9yZXF1ZXN0ID0gbV9zdWdnZXN0ZWRSZXF1ZXN0Rm9yV2lsbFNlbmRSZXF1ZXN0Owog
ICAgIG1fc3VnZ2VzdGVkUmVxdWVzdEZvcldpbGxTZW5kUmVxdWVzdCA9IFJlc291cmNlUmVxdWVz
dCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAko
cmV2aXNpb24gMTY1NzMxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBJUEMgewog
CiBjbGFzcyBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBnZXRPckNyZWF0ZShSdW5Mb29wKik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3luY01lc3NhZ2VTdGF0ZT4gZ2V0T3JDcmVhdGUoUnVu
TG9vcCYpOwogICAgIH5TeW5jTWVzc2FnZVN0YXRlKCk7CiAKICAgICB2b2lkIHdha2VVcENsaWVu
dFJ1bkxvb3AoKQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VzKENvbm5lY3Rpb24qIGFsbG93ZWRDb25uZWN0aW9uKTsKIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBTeW5jTWVzc2FnZVN0YXRlKFJ1bkxvb3AqKTsKKyAgICBleHBsaWNpdCBTeW5jTWVz
c2FnZVN0YXRlKFJ1bkxvb3AmKTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSdW5Mb29wKiwgU3lu
Y01lc3NhZ2VTdGF0ZSo+IFN5bmNNZXNzYWdlU3RhdGVNYXA7CiAgICAgc3RhdGljIFN5bmNNZXNz
YWdlU3RhdGVNYXAmIHN5bmNNZXNzYWdlU3RhdGVNYXAoKQpAQCAtNzYsNyArNzYsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0
Y2hNZXNzYWdlc0ZvckNvbm5lY3Rpb24oQ29ubmVjdGlvbiopOwogCi0gICAgUnVuTG9vcCogbV9y
dW5Mb29wOworICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKICAgICBCaW5hcnlTZW1hcGhvcmUgbV93
YWl0Rm9yU3luY1JlcGx5U2VtYXBob3JlOwogCiAgICAgLy8gUHJvdGVjdHMgbV9kaWRTY2hlZHVs
ZURpc3BhdGNoTWVzc2FnZXNXb3JrU2V0IGFuZCBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2Fp
dGluZ0ZvclN5bmNSZXBseS4KQEAgLTEwMSwxMCArMTAxLDEwIEBAIHB1YmxpYzoKIH07CiAKIAot
UGFzc1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5j
TWVzc2FnZVN0YXRlOjpnZXRPckNyZWF0ZShSdW5Mb29wKiBydW5Mb29wKQorUGFzc1JlZlB0cjxD
b25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
OjpnZXRPckNyZWF0ZShSdW5Mb29wJiBydW5Mb29wKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tl
cihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7Ci0gICAgU3luY01lc3NhZ2VTdGF0ZU1hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5hZGQocnVuTG9vcCwgbnVs
bHB0cik7CisgICAgU3luY01lc3NhZ2VTdGF0ZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bmNN
ZXNzYWdlU3RhdGVNYXAoKS5hZGQoJnJ1bkxvb3AsIG51bGxwdHIpOwogCiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
CkBAIC0xMTcsNyArMTE3LDcgQEAgUGFzc1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlPgogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJlbGVhc2UoKTsKIH0KIAotQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6U3luY01lc3NhZ2VTdGF0ZShSdW5Mb29wKiBydW5Mb29w
KQorQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6U3luY01lc3NhZ2VTdGF0ZShSdW5Mb29w
JiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiB7CiB9CkBAIC0xMjYsOCArMTI2
LDggQEAgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6flN5bmNNZXNzYQogewogICAgIE11
dGV4TG9ja2VyIGxvY2tlcihzeW5jTWVzc2FnZVN0YXRlTWFwTXV0ZXgoKSk7CiAgICAgCi0gICAg
QVNTRVJUKHN5bmNNZXNzYWdlU3RhdGVNYXAoKS5jb250YWlucyhtX3J1bkxvb3ApKTsKLSAgICBz
eW5jTWVzc2FnZVN0YXRlTWFwKCkucmVtb3ZlKG1fcnVuTG9vcCk7CisgICAgQVNTRVJUKHN5bmNN
ZXNzYWdlU3RhdGVNYXAoKS5jb250YWlucygmbV9ydW5Mb29wKSk7CisgICAgc3luY01lc3NhZ2VT
dGF0ZU1hcCgpLnJlbW92ZSgmbV9ydW5Mb29wKTsKIAogICAgIEFTU0VSVChtX21lc3NhZ2VzVG9E
aXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5pc0VtcHR5KCkpOwogfQpAQCAtMTQ1LDcg
KzE0NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2UKICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogICAgICAgICAKICAgICAgICAgaWYgKG1f
ZGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2VzV29ya1NldC5hZGQoY29ubmVjdGlvbikuaXNOZXdF
bnRyeSkKLSAgICAgICAgICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goYmluZCgmU3luY01lc3NhZ2VT
dGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlQW5kUmVzZXREaWRTY2hlZHVsZURpc3BhdGNoTWVzc2FnZXNG
b3JDb25uZWN0aW9uLCB0aGlzLCBSZWZQdHI8Q29ubmVjdGlvbj4oY29ubmVjdGlvbikpKTsKKyAg
ICAgICAgICAgIG1fcnVuTG9vcC5kaXNwYXRjaChiaW5kKCZTeW5jTWVzc2FnZVN0YXRlOjpkaXNw
YXRjaE1lc3NhZ2VBbmRSZXNldERpZFNjaGVkdWxlRGlzcGF0Y2hNZXNzYWdlc0ZvckNvbm5lY3Rp
b24sIHRoaXMsIFJlZlB0cjxDb25uZWN0aW9uPihjb25uZWN0aW9uKSkpOwogCiAgICAgICAgIG1f
bWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChzdGQ6Om1v
dmUoY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSkpOwogICAgIH0KQEAgLTE1Nyw3ICsxNTcs
NyBAQCBib29sIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OnByb2NlCiAKIHZvaWQgQ29u
bmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhDb25uZWN0aW9uKiBh
bGxvd2VkQ29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQobV9ydW5Mb29wID09IFJ1bkxvb3A6OmN1
cnJlbnQoKSk7CisgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7
CiAKICAgICBWZWN0b3I8Q29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZT4gbWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5OwogCkBAIC0yMDAsMTcgKzIwMCwxNyBAQCB2
b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhCiAgICAgZGlzcGF0Y2hNZXNz
YWdlcyhjb25uZWN0aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBDb25uZWN0aW9u
OjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIgaWRlbnRpZmllciwgQ2xpZW50KiBj
bGllbnQsIFJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApCitQYXNzUmVmUHRyPENvbm5lY3Rpb24+IENv
bm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciBpZGVudGlmaWVyLCBD
bGllbnQqIGNsaWVudCwgUnVuTG9vcCYgY2xpZW50UnVuTG9vcCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvbm5lY3Rpb24oaWRlbnRpZmllciwgdHJ1ZSwgY2xpZW50LCBjbGllbnRSdW5M
b29wKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gQ29ubmVjdGlvbjo6Y3JlYXRlQ2xp
ZW50Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIENsaWVudCogY2xpZW50LCBSdW5M
b29wKiBjbGllbnRSdW5Mb29wKQorUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBDb25uZWN0aW9uOjpj
cmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIgaWRlbnRpZmllciwgQ2xpZW50KiBjbGll
bnQsIFJ1bkxvb3AmIGNsaWVudFJ1bkxvb3ApCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b25uZWN0aW9uKGlkZW50aWZpZXIsIGZhbHNlLCBjbGllbnQsIGNsaWVudFJ1bkxvb3ApKTsKIH0K
IAotQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCogY2xpZW50LCBSdW5Mb29wKiBjbGllbnRSdW5Mb29wKQorQ29ubmVjdGlv
bjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVu
dCogY2xpZW50LCBSdW5Mb29wJiBjbGllbnRSdW5Mb29wKQogICAgIDogbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV9pc1NlcnZlcihpc1NlcnZlcikKICAgICAsIG1fc3luY1JlcXVlc3RJRCgwKQpA
QCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2V0U2hvdWxkRXhpdE9uU3luY01l
c3MKIAogdm9pZCBDb25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFdvcmtRdWV1ZSogd29ya1F1ZXVlLCBXb3Jr
UXVldWVNZXNzYWdlUmVjZWl2ZXIqIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcikKIHsKLSAgICBB
U1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7CisgICAgQVNTRVJU
KCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fY2xpZW50UnVuTG9vcCk7CiAgICAgQVNTRVJUKCFt
X2lzQ29ubmVjdGVkKTsKIAogICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChiaW5kKCZD
b25uZWN0aW9uOjphZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJPbkNvbm5lY3Rpb25Xb3JrUXVl
dWUsIHRoaXMsIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFJlZlB0cjxXb3JrUXVldWU+KHdvcmtRdWV1
ZSksIFJlZlB0cjxXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXI+KHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlcikpKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIENvbm5lY3Rpb246OmFkZFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlCiAKIHZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKQogewotICAgIEFTU0VS
VChSdW5Mb29wOjpjdXJyZW50KCkgPT0gbV9jbGllbnRSdW5Mb29wKTsKKyAgICBBU1NFUlQoJlJ1
bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9jbGllbnRSdW5Mb29wKTsKIAogICAgIG1fY29ubmVjdGlv
blF1ZXVlLT5kaXNwYXRjaChiaW5kKCZDb25uZWN0aW9uOjpyZW1vdmVXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXJPbkNvbm5lY3Rpb25Xb3JrUXVldWUsIHRoaXMsIG1lc3NhZ2VSZWNlaXZlck5hbWUp
KTsKIH0KQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IENvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6
c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRW5jb2Rlcj4gZW5jb2Rlciwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0
LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewotICAgIGlmIChSdW5Mb29wOjpjdXJyZW50KCkg
IT0gbV9jbGllbnRSdW5Mb29wKSB7CisgICAgaWYgKCZSdW5Mb29wOjpjdXJyZW50KCkgIT0gJm1f
Y2xpZW50UnVuTG9vcCkgewogICAgICAgICAvLyBObyBmbGFncyBhcmUgc3VwcG9ydGVkIGZvciBz
eW5jaHJvbm91cyBtZXNzYWdlcyBzZW50IGZyb20gc2Vjb25kYXJ5IHRocmVhZHMuCiAgICAgICAg
IEFTU0VSVCghc3luY1NlbmRGbGFncyk7CiAgICAgICAgIHJldHVybiBzZW5kU3luY01lc3NhZ2VG
cm9tU2Vjb25kYXJ5VGhyZWFkKHN5bmNSZXF1ZXN0SUQsIHN0ZDo6bW92ZShlbmNvZGVyKSwgdGlt
ZW91dCk7CkBAIC00ODAsNyArNDgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVy
PiBDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246
OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyLCBzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzIHRpbWVvdXQpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmN1cnJlbnQoKSAh
PSBtX2NsaWVudFJ1bkxvb3ApOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpICE9ICZt
X2NsaWVudFJ1bkxvb3ApOwogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rl
cj4gQ29ubmVjdGkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBB
bHRob3VnaCB3ZSBydW4gZm9yZXZlciwgYW55IGV2ZW50cyBpbmNvbWluZyB3aWxsIGNhdXNlIHVz
IHRvIGRyb3Agb3V0IGFuZCBleGl0IG91dC4gVGhpcyBob3dldmVyIGRvZXNuJ3QKICAgICAgICAg
ICAgIC8vIGFjY291bnQgZm9yIGEgdGltZW91dCB2YWx1ZSBwYXNzZWQgaW4uIFRpbWVvdXQgaXMg
YWx3YXlzIE5vVGltZW91dCBpbiB0aGVzZSBjYXNlcywgYnV0IHRoYXQgY291bGQgY2hhbmdlLgot
ICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5ydW5Gb3JEdXJhdGlvbigxZTEwKTsKKyAg
ICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5Gb3JEdXJhdGlvbigxZTEwKTsKICAgICAg
ICAgICAgIHRpbWVkT3V0ID0gY3VycmVudFRpbWUoKSA+PSBhYnNvbHV0ZVRpbWU7CiAjZW5kaWYK
ICAgICAgICAgfSBlbHNlCkBAIC02MTMsMTEgKzYxMywxMSBAQCB2b2lkIENvbm5lY3Rpb246OnBy
b2Nlc3NJbmNvbWluZ01lc3NhZ2UoCiAgICAgICAgICAgICBDU3RyaW5nIG1lc3NhZ2VSZWNlaXZl
ck5hbWUgPSAiPHVua25vd24gbWVzc2FnZT4iOwogICAgICAgICAgICAgQ1N0cmluZyBtZXNzYWdl
TmFtZSA9IFN0cmluZzo6Zm9ybWF0KCI8bWVzc2FnZSBsZW5ndGg6ICV6dSBieXRlcz4iLCBtZXNz
YWdlLT5sZW5ndGgoKSkudXRmOCgpOwogCi0gICAgICAgICAgICBtX2NsaWVudFJ1bkxvb3AtPmRp
c3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
LCB0aGlzLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSkpOworICAgICAgICAgICAg
bV9jbGllbnRSdW5Mb29wLmRpc3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlLCB0aGlzLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFt
ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9jbGllbnRS
dW5Mb29wLT5kaXNwYXRjaChiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZSwgdGhpcywgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLnRvU3RyaW5n
KCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkudG9TdHJpbmcoKSkpOworICAgICAgICBtX2NsaWVu
dFJ1bkxvb3AuZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UsIHRoaXMsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0cmlu
ZygpLCBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6Y29ubmVjdGlv
bkRpZENsb3NlKCkKICAgICBpZiAobV9kaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxi
YWNrKQogICAgICAgICBtX2RpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2sodGhp
cyk7CiAKLSAgICBtX2NsaWVudFJ1bkxvb3AtPmRpc3BhdGNoKFdURjo6YmluZCgmQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hDb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKKyAgICBtX2NsaWVudFJ1bkxv
b3AuZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNwYXRjaENvbm5lY3Rpb25EaWRD
bG9zZSwgdGhpcykpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoQ29ubmVjdGlvbkRp
ZENsb3NlKCkKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3lu
Y01lc3NhZ2UoTWVzCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZVN0cmluZywgY29uc3Qg
Q1N0cmluZyYgbWVzc2FnZU5hbWVTdHJpbmcpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmN1cnJl
bnQoKSA9PSBtX2NsaWVudFJ1bkxvb3ApOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgp
ID09ICZtX2NsaWVudFJ1bkxvb3ApOwogCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0
dXJuOwpAQCAtNzY4LDcgKzc2OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5xdWV1ZUluY29taW5n
TWVzc2FnZSgKICAgICAgICAgbV9pbmNvbWluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1vdmUoaW5j
b21pbmdNZXNzYWdlKSk7CiAgICAgfQogCi0gICAgbV9jbGllbnRSdW5Mb29wLT5kaXNwYXRjaChX
VEY6OmJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSwgdGhpcykpOworICAgIG1f
Y2xpZW50UnVuTG9vcC5kaXNwYXRjaChXVEY6OmJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoT25l
TWVzc2FnZSwgdGhpcykpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoT25lTWVzc2FnZSgpCiAKIHZvaWQgQ29ubmVjdGlvbjo6d2FrZVVwUnVuTG9v
cCgpCiB7Ci0gICAgbV9jbGllbnRSdW5Mb29wLT53YWtlVXAoKTsKKyAgICBtX2NsaWVudFJ1bkxv
b3Aud2FrZVVwKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAxNjU3MzEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcs
OCArMTI3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDb25uZWN0aW9uOjpTb2NrZXRQYWlyIGNy
ZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDb25uZWN0aW9uPiBjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCos
IFdURjo6UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29u
bmVjdGlvbj4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVudGlmaWVyLCBDbGllbnQqLCBXVEY6
OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rp
b24+IGNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV1RGOjpSdW5M
b29wJiBjbGllbnRSdW5Mb29wKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBj
cmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCYg
Y2xpZW50UnVuTG9vcCk7CiAgICAgfkNvbm5lY3Rpb24oKTsKIAogICAgIENsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6
CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAg
IENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiwgV1RGOjpSdW5M
b29wKiBjbGllbnRSdW5Mb29wKTsKKyAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCYgY2xpZW50UnVuTG9vcCk7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRh
dGUoKTsKICAgICAKQEAgLTIyMyw3ICsyMjMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2lz
Q29ubmVjdGVkOwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fY29ubmVjdGlvblF1ZXVlOwotICAg
IFdURjo6UnVuTG9vcCogbV9jbGllbnRSdW5Mb29wOworICAgIFdURjo6UnVuTG9vcCYgbV9jbGll
bnRSdW5Mb29wOwogCiAgICAgSGFzaE1hcDxTdHJpbmdSZWZlcmVuY2UsIHN0ZDo6cGFpcjxSZWZQ
dHI8V29ya1F1ZXVlPiwgUmVmUHRyPFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcj4+PiBtX3dvcmtR
dWV1ZU1lc3NhZ2VSZWNlaXZlcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAkocmV2aXNpb24gMTY1NzMxKQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2
ZW50SGFuZGwKICAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMi
ICYmIGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gIlNldEV4Y2VwdGlvblBvcnQiKSB7CiAgICAg
ICAgIGlmIChtX2lzU2VydmVyKSB7CiAgICAgICAgICAgICAvLyBTZXJ2ZXIgY29ubmVjdGlvbnMg
YXJlbid0IHN1cHBvc2VkIHRvIGhhdmUgdGhlaXIgZXhjZXB0aW9uIHBvcnRzIG92ZXJyaWRlbi4g
VHJlYXQgdGhpcyBhcyBhbiBpbnZhbGlkIG1lc3NhZ2UuCi0gICAgICAgICAgICBtX2NsaWVudFJ1
bkxvb3AtPmRpc3BhdGNoKGJpbmQoJkNvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlLCB0aGlzLCBkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkudG9TdHJpbmco
KSwgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKS50b1N0cmluZygpKSk7CisgICAgICAgICAgICBtX2Ns
aWVudFJ1bkxvb3AuZGlzcGF0Y2goYmluZCgmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UsIHRoaXMsIGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS50b1N0
cmluZygpLCBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpLnRvU3RyaW5nKCkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBNYWNoUG9ydCBleGNlcHRpb25Qb3J0OwpJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE2NTczMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnRlcm1pbmF0aW9uVGltZXJG
aXJlZAogCiB2b2lkIENoaWxkUHJvY2Vzczo6c3RvcFJ1bkxvb3AoKQogewotICAgIFJ1bkxvb3A6
Om1haW4oKS0+c3RvcCgpOworICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CiB9CiAKIHZvaWQg
Q2hpbGRQcm9jZXNzOjp0ZXJtaW5hdGUoKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAJKHJldmlzaW9uIDE2NTczMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRlKE5Q
T2JqZQogICAgIC8vIHRoYXQgaXMga25vd24gdG8gYmUgbWlzdXNlZCBkdXJpbmcgcGx1Z2luIHRl
YXJkb3duLCBhbmQgdG8gbm90IGJlIGNvbmNlcm5lZCBhYm91dCBjaGFuZ2UgaW4gYmVoYXZpb3Ig
aWYgdGhpcwogICAgIC8vIG9jY3VyZWQgYXQgYW55IG90aGVyIHRpbWUuCiAgICAgaWYgKCFpc01h
aW5UaHJlYWQoKSkgewotICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJk5Q
T2JqZWN0UHJveHk6Ok5QX0RlYWxsb2NhdGUsIG5wT2JqZWN0KSk7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChiaW5kKCZOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRlLCBucE9i
amVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcAkocmV2aXNpb24gMTY1NzMxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNyArMTExLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAg
ICAgICBjbG9zZShzb2NrZXRzWzBdKTsKICAgICAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBp
ZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNz
YWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+
ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
LCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhp
cywgcGlkLCBzb2NrZXRzWzFdKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAJ
KHJldmlzaW9uIDE2NTczMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9n
dGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBtX3Byb2Nlc3NJ
ZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBw
cm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6
bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGlu
Z1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHNvY2tldHNbMV0pKTsKKyAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hM
YXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFdKSk7
CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNzKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJv
Y2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAxNjU3MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3RUb1NlcnZpY2UoY29uc3Qg
UHJvY2UKICAgICAgICAgICAgIC8vIEFuZCB0aGUgcmVjZWl2ZSByaWdodC4KICAgICAgICAgICAg
IG1hY2hfcG9ydF9tb2RfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBNQUNI
X1BPUlRfUklHSFRfUkVDRUlWRSwgLTEpOwogCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkt
PmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0aGF0LCAw
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSkpOworICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0
aGF0LCAwLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoKSkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CiAgICAg
ICAgICAgICBBU1NFUlQoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcGx5LCAi
bWVzc2FnZS1uYW1lIiksICJwcm9jZXNzLWZpbmlzaGVkLWxhdW5jaGluZyIpKTsKQEAgLTI0MCw3
ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBjb25uZWN0VG9TZXJ2aWNlKGNvbnN0IFByb2NlCiAgICAg
ICAgICAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllciA9IHhwY19jb25uZWN0aW9uX2dldF9waWQo
Y29ubmVjdGlvbik7CiAKICAgICAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0
aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nl
c3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcihsaXN0ZW5pbmdQb3J0LCBjb25uZWN0aW9uKSkpOworICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9u
LCB0aGF0LCBwcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxp
c3RlbmluZ1BvcnQsIGNvbm5lY3Rpb24pKSk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGF0LT5k
ZXJlZigpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyBib29sIHRyeVByZWV4aXN0aW5nUHJv
Y2Vzcyhjb25zdAogICAgIH0KICAgICAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcg
dGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5M
b29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0
aW9uLCB0aGF0LCBwcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KGxpc3RlbmluZ1BvcnQpKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoZGlk
RmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0aGF0LCBwcm9jZXNzSWRlbnRpZmllciwg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTQ5OCw3ICs0OTgsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQcm9jZXNz
KGNvbnN0IFByb2Nlc3NMCiAgICAgfQogCiAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5n
IHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVu
TG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5j
dGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cihsaXN0ZW5pbmdQb3J0KSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKGRp
ZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiwgdGhhdCwgcHJvY2Vzc0lkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSkpOwogfQogCiB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAx
NjU3MzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMSwxNCArNDIxLDE0IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OnByb2Nlc3NXaWxsQ2xvc2VDb24KICAgICBtX3F1ZXVlLT5kaXNwYXRjaChiaW5kKCZT
dG9yYWdlTWFuYWdlcjo6aW52YWxpZGF0ZUNvbm5lY3Rpb25JbnRlcm5hbCwgdGhpcywgUmVmUHRy
PElQQzo6Q29ubmVjdGlvbj4od2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCkpKSk7CiB9CiAK
LXZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnMoRnVuY3Rpb25EaXNwYXRjaGVyKiBjYWxs
YmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3QgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9yaWdpbnMsIHZv
aWQqIGNvbnRleHQpKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2lucyhGdW5jdGlvbkRp
c3BhdGNoZXImIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxi
YWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3Vy
aXR5T3JpZ2lucywgdm9pZCogY29udGV4dCkpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goYmlu
ZCgmU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnNJbnRlcm5hbCwgdGhpcywgUmVmUHRyPEZ1bmN0
aW9uRGlzcGF0Y2hlcj4oY2FsbGJhY2tEaXNwYXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsK
KyAgICBtX3F1ZXVlLT5kaXNwYXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2luc0lu
dGVybmFsLCB0aGlzLCBSZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPigmY2FsbGJhY2tEaXNwYXRj
aGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbihGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0
Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8TG9jYWxT
dG9yYWdlRGV0YWlscz4mIHN0b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250ZXh0KSkKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oRnVuY3Rpb25EaXNwYXRjaGVy
JiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29u
c3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+JiBzdG9yYWdlRGV0YWlscywgdm9pZCogY29u
dGV4dCkpCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goYmluZCgmU3RvcmFnZU1hbmFnZXI6Omdl
dFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5JbnRlcm5hbCwgdGhpcywgUmVmUHRyPEZ1bmN0aW9uRGlz
cGF0Y2hlcj4oY2FsbGJhY2tEaXNwYXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZURldGFpbHNC
eU9yaWdpbkludGVybmFsLCB0aGlzLCBSZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPigmY2FsbGJh
Y2tEaXNwYXRjaGVyKSwgY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogdm9pZCBTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE2NTczMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDgg
QEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgYSBjb250ZXh0ICsgQyBmdW5j
dGlvbiwgdGhpcyBzaG91bGQgdGFrZSBhIFdURjo6RnVuY3Rpb24sIGJ1dCB3ZSBjdXJyZW50bHkg
ZG9uJ3QKICAgICAvLyBzdXBwb3J0IGFyZ3VtZW50cyBpbiBmdW5jdGlvbnMuCi0gICAgdm9pZCBn
ZXRPcmlnaW5zKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBj
b250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+PiYsIHZvaWQqIGNvbnRleHQpKTsKLSAgICB2b2lkIGdldFN0b3JhZ2VEZXRh
aWxzQnlPcmlnaW4oRnVuY3Rpb25EaXNwYXRjaGVyKiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQq
IGNvbnRleHQsIHZvaWQgKCpjYWxsYmFjaykoY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFp
bHM+Jiwgdm9pZCogY29udGV4dCkpOworICAgIHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlvbkRpc3Bh
dGNoZXImIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNr
KShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mLCB2b2lkKiBj
b250ZXh0KSk7CisgICAgdm9pZCBnZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKEZ1bmN0aW9uRGlz
cGF0Y2hlciYgY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJh
Y2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VEZXRhaWxzPiYsIHZvaWQqIGNvbnRleHQpKTsK
ICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
KTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMTY1NzMx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTczLDcgKzE1NzMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnVucHJv
dGVjdFBsdWdpbkZyb21EZXN0CiAgICAgLy8gdGhlIGRlc3Ryb3llZCBvYmplY3QgaGlnaGVyIG9u
IHRoZSBzdGFjay4gVG8gcHJldmVudCB0aGlzLCBpZiB0aGUgcGx1Zy1pbiBoYXMKICAgICAvLyBv
bmx5IG9uZSByZW1haW5pbmcgcmVmZXJlbmNlLCBjYWxsIGRlcmVmKCkgYXN5bmNocm9ub3VzbHku
CiAgICAgaWYgKGhhc09uZVJlZigpKQotICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNo
KGJpbmQoZGVyZWZQbHVnaW5WaWV3LCB0aGlzKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChiaW5kKGRlcmVmUGx1Z2luVmlldywgdGhpcykpOwogICAgIGVsc2UKICAgICAgICAg
ZGVyZWYoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkocmV2aXNpb24gMTY1
NzMxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgTmV0
c2NhcGVQbHVnaW46OnBvcFBvcHVwc0VuYWJsZWRTdGEKIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6
cGx1Z2luVGhyZWFkQXN5bmNDYWxsKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiB1c2Vy
RGF0YSkKIHsKLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKFdURjo6YmluZCgmTmV0c2Nh
cGVQbHVnaW46OmhhbmRsZVBsdWdpblRocmVhZEFzeW5jQ2FsbCwgdGhpcywgZnVuY3Rpb24sIHVz
ZXJEYXRhKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURjo6YmluZCgmTmV0c2Nh
cGVQbHVnaW46OmhhbmRsZVBsdWdpblRocmVhZEFzeW5jQ2FsbCwgdGhpcywgZnVuY3Rpb24sIHVz
ZXJEYXRhKSk7CiB9CiAgICAgCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpoYW5kbGVQbHVnaW5UaHJl
YWRBc3luY0NhbGwodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIHVzZXJEYXRhKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlz
cGF0Y2hlci5jcHAJKHJldmlzaW9uIDE2NTczMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyAr
MTQwLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0XwogICAgIFVO
VVNFRF9QQVJBTShjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2VuZGlmCiAKLSAgICBSdW5Mb29w
OjptYWluKCktPmRpc3BhdGNoKGJpbmQoJkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2
ZW50LCB0aGlzLCBwYWdlSUQsIHdoZWVsRXZlbnQpKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goYmluZCgmRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQsIHRoaXMsIHBh
Z2VJRCwgd2hlZWxFdmVudCkpOwogfQogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hX
aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gMTY1NzMxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2
aXNpYmxlQ29udGVuCiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2RhdGFNdXRleCk7CiAg
ICAgICAgIG1fbGF0ZXN0VXBkYXRlLnNldChwYWdlSUQsIHZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8pOwogICAgIH0KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlZpZXdV
cGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSwgdGhpcykp
OworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZWaWV3VXBkYXRlRGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUsIHRoaXMpKTsKIH0KIAogdm9pZCBW
aWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMTY1NzMxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODUsNyArODg1LDcgQEAgdm9pZCBXZWJQYWdl
OjpjbG9zZSgpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlV2ViUGFnZShtX3BhZ2VJ
RCk7CiAKICAgICBpZiAoaXNSdW5uaW5nTW9kYWwpCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+
c3RvcCgpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnRyeUNsb3NlKCkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTczMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTE3ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgUnVuTG9vcCBvYmplY3RzIHRocm91Z2gg
cmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgIEFkanVzdCB0aGUgY29kZSBhY2NvcmRpbmdseSBub3cgdGhh
dCBSdW5Mb29wOjpjdXJyZW50KCkgYW5kIFJ1bkxvb3A6Om1haW4oKQorICAgICAgICByZXR1cm4g
UnVuTG9vcCByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAg
IChsb2FkZWRDYWxsYmFjayk6CisgICAgICAgIChjbGlja2VkQ2FsbGJhY2spOgorCiAyMDE0LTAz
LTE2ICBLaW0gQnl1bmcgSnVuICA8YmoxOTg3LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXSBFbmFibGUgVE9VQ0hfU0xJREVSIG1hY3JvCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCShy
ZXZpc2lvbiAxNjU3MzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
RE9NRE9NV2luZG93VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gbG9hZGVkQ2FsbGJhY2soV2ViS2l0RE9NCiAgICAgdGVzdC0+bm90aWZ5
KCJsb2FkZWQiLCAiIik7CiAKICAgICAvLyBTdG9wIHRoZSBsb29wIGFuZCBsZXQgdGVzdFNpZ25h
bHMoKSBvciB0ZXN0RGlzcGF0Y2hFdmVudCgpIGNvbnRpbnVlIGl0cyBjb3Vyc2UKLSAgICBSdW5M
b29wOjpjdXJyZW50KCktPnN0b3AoKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwog
CiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBnYm9vbGVh
biBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE8KICAgICB0ZXN0LT5ub3RpZnkoImZpbmlzaCIsICIi
KTsKIAogICAgIC8vIFN0b3AgdGhlIGxvb3AgYW5kIGxldCB0ZXN0U2lnbmFscygpIG9yIHRlc3RE
aXNwYXRjaEV2ZW50KCkgY29udGludWUgaXRzIGNvdXJzZQotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS0+c3RvcCgpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7CiAKICAgICByZXR1cm4g
RkFMU0U7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>