<?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>178548</bug_id>
          
          <creation_ts>2017-10-19 15:28:12 -0700</creation_ts>
          <short_desc>Optimize accesses to how we get the direct prototype</short_desc>
          <delta_ts>2017-11-15 13:03:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362394</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 15:28:12 -0700</bug_when>
    <thetext>....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362428</commentid>
    <comment_count>1</comment_count>
      <attachid>324309</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 16:20:14 -0700</bug_when>
    <thetext>Created attachment 324309
test building webcore on EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362432</commentid>
    <comment_count>2</comment_count>
      <attachid>324311</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 16:25:33 -0700</bug_when>
    <thetext>Created attachment 324311
test building on EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362436</commentid>
    <comment_count>3</comment_count>
      <attachid>324312</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 16:27:59 -0700</bug_when>
    <thetext>Created attachment 324312
test building on EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362587</commentid>
    <comment_count>4</comment_count>
      <attachid>324364</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-19 23:59:39 -0700</bug_when>
    <thetext>Created attachment 324364
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362588</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-20 00:02:33 -0700</bug_when>
    <thetext>Attachment 324364 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 34 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>1362589</commentid>
    <comment_count>6</comment_count>
      <attachid>324364</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-20 00:02:52 -0700</bug_when>
    <thetext>Comment on attachment 324364
patch

r=me, nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362591</commentid>
    <comment_count>7</comment_count>
      <attachid>324365</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-20 00:10:17 -0700</bug_when>
    <thetext>Created attachment 324365
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362598</commentid>
    <comment_count>8</comment_count>
      <attachid>324365</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-20 00:50:13 -0700</bug_when>
    <thetext>Comment on attachment 324365
patch for landing

Clearing flags on attachment: 324365

Committed r223746: &lt;https://trac.webkit.org/changeset/223746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362599</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-20 00:50:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372335</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:03:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568690&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324309</attachid>
            <date>2017-10-19 16:20:14 -0700</date>
            <delta_ts>2017-10-19 16:25:33 -0700</delta_ts>
            <desc>test building webcore on EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41425</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDcgKzk5Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihwb2ludGVyKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERP
TUdldHRlclNuaXBwZXQ+IGNhbGxET01HZXR0ZXIoKQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhpc09iamVjdCk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSkpOwogICAgIH0KIH07CiAKQEAgLTIyMTEsNyArMjIxMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCgpLCBJbXB1
cmVQcm94eVR5cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOwogICAgIEpTUHJveHkqIHByb3h5
ID0gSlNQcm94eTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb3h5KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw3
IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOyAKLSAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpKTsKKyAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dChleGVjLT52bSgpKSk7CiB9CiAKIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYQogICAgIH0KIAogICAgIHJldHVybiAhdGhpc09i
amVjdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpCi0gICAgICAgICYmIGFycmF5UHJvdG90eXBlID09
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpCisgICAgICAgICYmIGFycmF5UHJvdG90
eXBlID09IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChnbG9iYWxPYmplY3QtPnZtKCkp
CiAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRl
T25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXpl
ZFRvU3RyaW5nKAogICAgICAgICAgICAgbmFtZVZhbHVlID0gbmFtZVNsb3QuZ2V0VmFsdWUoZXhl
YywgbmFtZVByb3BlcnROYW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGN1cnJlbnRPYmogPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBjdXJy
ZW50T2JqID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgIH0KICAgICBzY29wZS5h
c3NlcnROb0V4Y2VwdGlvbigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTIsMTAgKzEyOTIsMTAg
QEAgYm9vbCBKU0FycmF5Ojppc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTgogICAgIGlmIChzdHJ1
Y3R1cmUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoZ2V0UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVByb3RvdHlwZSgpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAo
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSAhPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBpZiAoZ2V0RGlyZWN0T2Zmc2V0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCkgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJlY3QoKSk7CisgICAgcmVzZXRQ
cm90b3R5cGUodm0sIGdldFByb3RvdHlwZURpcmVjdCh2bSgpKSk7CiB9CiAKIGJvb2wgSlNHbG9i
YWxPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAt
MTA5OSw4ICsxMDk5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJHbG9iYWxTY29wZUV4
dAogc3RhdGljIGlubGluZSBKU09iamVjdCogbGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9IG9iamVjdDsKLSAgICB3aGlsZSAoby0+Z2V0
UHJvdG90eXBlRGlyZWN0KCkuaXNPYmplY3QoKSkKLSAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdl
dFByb3RvdHlwZURpcmVjdCgpKTsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIHdoaWxl
IChvLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzT2JqZWN0KCkpCisgICAgICAgIG8gPSBhc09i
amVjdChvLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAt
MTE1MCwxMyArMTE1MSwxNCBAQCBpbmxpbmUgdm9pZCBPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5n
RmluCiAgICAgLy8gVk0uIEJ1dCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwsIHNpbmNlIHRoZXJlIG1h
eSBiZSBvYmplY3RzIHRoYXQgY2xhaW0gdG8gYmVsb25nIHRvCiAgICAgLy8gYSBkaWZmZXJlbnQg
Z2xvYmFsIG9iamVjdCB0aGF0IGhhdmUgcHJvdG90eXBlcyBmcm9tIG91ciBnbG9iYWwgb2JqZWN0
LgogICAgIGJvb2wgZm91bmRHbG9iYWxPYmplY3QgPSBmYWxzZTsKKyAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOwogICAgIGZvciAoSlNPYmplY3QqIGN1cnJlbnQgPSBvYmplY3Q7IDspIHsKICAgICAg
ICAgaWYgKGN1cnJlbnQtPmdsb2JhbE9iamVjdCgpID09IG1fZ2xvYmFsT2JqZWN0KSB7CiAgICAg
ICAgICAgICBmb3VuZEdsb2JhbE9iamVjdCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1cnJl
bnQtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVl
ID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlw
ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnQgPSBh
c09iamVjdChwcm90b3R5cGVWYWx1ZSk7CkBAIC0xNTI2LDcgKzE1MjgsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgCiAgICAgc3RydWN0dXJlKCktPnNldEdsb2Jh
bE9iamVjdCh2bSwgdGhpcyk7CiAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2JhbE9iamVjdE1l
dGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgIGluaXQodm0pOwot
ICAgIHNldEdsb2JhbFRoaXModm0sIEpTUHJveHk6OmNyZWF0ZSh2bSwgSlNQcm94eTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBnZXRQcm90b3R5cGVEaXJlY3QoKSwgUHVyZUZvcndhcmRpbmdQ
cm94eVR5cGUpLCB0aGlzKSk7CisgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94eTo6Y3JlYXRl
KHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFByb3RvdHlwZURpcmVj
dCh2bSksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhpcykpOwogfQogCiB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTT2JqZWN0KiB0aGlzVmFsdWUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIw
ICszNSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgYm9vbCBKU0dsb2JhbE9i
amVjdDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKCkKIHsKICAgICByZXR1cm4gIWhhc0luZGV4ZWRQ
cm9wZXJ0aWVzKG1fb2JqZWN0UHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgJiYg
bV9vYmplY3RQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpLmlzTnVsbCgpOworICAgICAg
ICAmJiBtX29iamVjdFByb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKCkpLmlzTnVsbCgp
OwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmFycmF5UHJvdG90eXBl
Q2hhaW5Jc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMobV9hcnJh
eVByb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYmIG1fYXJyYXlQcm90b3R5cGUt
PmdldFByb3RvdHlwZURpcmVjdCgpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpCisgICAgICAg
ICYmIG1fYXJyYXlQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCh2bSgpKSA9PSBtX29iamVj
dFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJc1NhbmUoKTsKIH0K
IAogQUxXQVlTX0lOTElORSBib29sIEpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90b3R5cGVDaGFp
bklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVydGllcyhtX3N0cmluZ1By
b3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYmIG1fc3RyaW5nUHJvdG90eXBlLT5n
ZXRQcm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQorICAgICAgICAm
JiBtX3N0cmluZ1Byb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKCkpID09IG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpCiAgICAgICAgICYmIG9iamVjdFByb3RvdHlwZUlzU2FuZSgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw3ICsxMDUsNyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0
CiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdoIHRvIEpTT2JqZWN0IGJlY2F1c2UgdGhlcmUn
cyBubyB3YXkgdG8gZ2l2ZSBhIAogICAgIC8vIGxleGljYWwgZW52aXJvbm1lbnQgb2JqZWN0IGdl
dHRlciBwcm9wZXJ0aWVzIG9yIGEgcHJvdG90eXBlLgogICAgIEFTU0VSVCghdGhpc09iamVjdC0+
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICBBU1NFUlQodGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSkuaXNOdWxsKCkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNwcAkocmV2aXNp
b24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgYm9vbCBKU01hcDo6aXNJdGVyYXRvclBy
b3RvY29sRmFzdEFuZE5vbgogICAgIGlmIChzdHJ1Y3R1cmUgPT0gZ2xvYmFsT2JqZWN0LT5tYXBT
dHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZ2V0UHJvdG90eXBl
RGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2bSkgIT0gZ2xv
YmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChnZXREaXJlY3RPZmZzZXQodm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSAhPSBpbnZhbGlkT2Zmc2V0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBA
IFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShKU08KICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdCgpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCh2bSksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwogICAg
IFByb3BlcnR5TmFtZSBjb25zdHJ1Y3Rvcih2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvcik7
CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGNvbnN0cnVjdG9yLCBzbG90
KSkgewogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CkBAIC0x
NjcxLDcgKzE2NzEsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
CiAKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZXhlYywgTm90U3Ry
aWN0TW9kZSkgPT0gdGhpcyk7CiAKLSAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0KCkg
PT0gcHJvdG90eXBlKQorICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHBy
b3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIGlzRXh0ZW5zaWJsZSA9
IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTE2OTAsNyArMTY5MCw3IEBAIGJvb2wgSlNP
YmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTUzNAogICAgICAgICBpZiAoVU5MSUtFTFko
YXNPYmplY3QobmV4dFByb3RvdHlwZSktPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUpKQogICAg
ICAgICAgICAgYnJlYWs7IC8vIFdlJ3JlIGRvbmUuIFNldCB0aGUgcHJvdG90eXBlLgotICAgICAg
ICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPmdldFByb3RvdHlwZURp
cmVjdCgpOworICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSkt
PmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2
bSwgcHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MDEsOSArMTcwMSw5IEBAIGJv
b2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCogb2IKICAgICByZXR1cm4gb2JqZWN0
LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBleGVjLCBwcm90b3R5cGUs
IHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAotSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90
eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSopCitKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQ
cm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVy
biBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIHJldHVybiBvYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdChleGVjLT52bSgpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6c2V0UHJvdG90
eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91
bGRUaHJvd0lmQ2FudFNldCkKQEAgLTI1MzgsNiArMjUzOCw3IEBAIHZvaWQgSlNPYmplY3Q6OmRl
YWxsb2NhdGVTcGFyc2VJbmRleE1hcCgKIAogYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJj
ZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93LCBi
b29sJiBwdXRSZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBmb3IgKEpT
T2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAgICAvLyBUaGlzIGhhcyB0aGUgc2Ft
ZSBiZWhhdmlvciB3aXRoIHJlc3BlY3QgdG8gcHJvdG90eXBlcyBhcyBKU09iamVjdDo6cHV0KCku
IEl0IG9ubHkKICAgICAgICAgLy8gYWxsb3dzIGEgcHJvdG90eXBlIHRvIGludGVyY2VwdCBhIHB1
dCBpZiAoYSkgdGhlIHByb3RvdHlwZSBkZWNsYXJlcyB0aGUgcHJvcGVydHkKQEAgLTI1NTksNyAr
MjU2MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW4KICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMjU2OSw3ICsyNTcwLDcgQEAgYm9vbCBKU09iamVjdDo6
YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogCiBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRl
cmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewotICAgIEpTVmFs
dWUgcHJvdG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHBy
b3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBlRGlyZWN0KGV4ZWMtPnZtKCkpOwogICAgIGlmIChw
cm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAt
MzY4MCw3ICszNjgxLDcgQEAgYm9vbCBKU09iamVjdDo6YW55T2JqZWN0SW5DaGFpbk1heUludGVy
YwogICAgICAgICBpZiAoY3VycmVudC0+c3RydWN0dXJlKHZtKS0+bWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsK
ICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCkBAIC0zNjk0LDcgKzM2OTUsNyBAQCBib29sIEpTT2JqZWN0Ojpwcm90b3R5
cGVDaGFpbk1heUludGVyY2VwCiAgICAgICAgIHJldHVybiBhbnlPYmplY3RJbkNoYWluTWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCk7CiAgICAgCiAgICAgZm9yIChKU09iamVjdCogY3VycmVu
dCA9IHRoaXM7IDspIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBjdXJyZW50LT5nZXRQ
cm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBjdXJyZW50LT5n
ZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcg
KzEzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBJdCBpcyB2YWxpZCB0byB1c2UgdGhvdWdoIHdoZW4g
eW91IGtub3cgdGhhdCB5b3Ugd2FudCB0byBkaXJlY3RseSBnZXQgaXQKICAgICAvLyB3aXRob3V0
IGNvbnN1bHRpbmcgdGhlIG1ldGhvZCB0YWJsZS4gVGhpcyBpcyBha2luIHRvIGdldHRpbmcgdGhl
IFtbUHJvdG90eXBlXV0KICAgICAvLyBpbnRlcm5hbCBmaWVsZCBkaXJlY3RseSBhcyBkZXNjcmli
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgSlNWYWx1ZSBnZXRQcm90b3R5cGVEaXJlY3Qo
KSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZURpcmVjdChWTSYpIGNvbnN0OwogCiAg
ICAgLy8gVGhpcyBzZXRzIHRoZSBwcm90b3R5cGUgd2l0aG91dCBjaGVja2luZyBmb3IgY3ljbGVz
IGFuZCB3aXRob3V0CiAgICAgLy8gZG9pbmcgZHluYW1pYyBkaXNwYXRjaCBvbiBbW1NldFByb3Rv
dHlwZU9mXV0gb3BlcmF0aW9uIGluIHRoZSBzcGVjaWZpY2F0aW9uLgpAQCAtODczLDcgKzg3Myw3
IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVEaXJlY3QoKS5pc051bGwo
KSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAoZ2V0UHJvdG90eXBlRGlyZWN0KCkp
KTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90
b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0gSGVhcDo6aGVh
cChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8odm0pKTsKICAgICB9CkBAIC0x
MzAzLDkgKzEzMDMsOSBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2bSwgU3RydWN0
CiB7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3QoKSBj
b25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZURpcmVjdChWTSYgdm0p
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUodGhpcyk7
CisgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZSh0aGlzKTsKIH0KIAog
aW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYykKQEAgLTEzMTMsNyArMTMxMyw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQ
cm90b3R5cGUoVk0KICAgICBhdXRvIGdldFByb3RvdHlwZU1ldGhvZCA9IG1ldGhvZFRhYmxlKHZt
KS0+Z2V0UHJvdG90eXBlOwogICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0
ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsKICAgICBpZiAo
TElLRUxZKGdldFByb3RvdHlwZU1ldGhvZCA9PSBkZWZhdWx0R2V0UHJvdG90eXBlKSkKLSAgICAg
ICAgcmV0dXJuIGdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICByZXR1cm4gZ2V0UHJvdG90
eXBlRGlyZWN0KHZtKTsKICAgICByZXR1cm4gZ2V0UHJvdG90eXBlTWV0aG9kKHRoaXMsIGV4ZWMp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgICAgICBpZiAob2Jq
LT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1
ZGluZ1Byb3RvKCkgfHwgb2JqLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3RvdHlwZSAhPSBkZWZh
dWx0R2V0UHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHBy
b3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIHByb3RvdHlwZSA9
IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMTYsNyArMTE2LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgICAgICBpZiAoTElLRUxZKHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBkZWZhdWx0
R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCi0gICAgICAgICAgICBwcm90b3R5cGUg
PSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICAgICAgcHJvdG90eXBlID0g
b2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKQEAgLTE1MCw3ICsxNTAsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE5vbkluZGV4CiAgICAgICAgIH0KICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRHZXRQcm90b3R5
cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKLSAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcHJvdG90
eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIHZvaWQgSlNQcm94eTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwKIHZvaWQgSlNQcm94
eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdCk7Ci0gICAgc2V0UHJvdG90eXBl
RGlyZWN0KHZtLCBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpKTsKKyAgICBzZXRQ
cm90b3R5cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7
CiB9CiAKIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAJKHJldmlzaW9uIDIy
MzcyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIGJvb2wgSlNTZXQ6OmlzSXRlcmF0b3JQcm90b2Nv
bEZhc3RBbmROb24KICAgICBpZiAoc3RydWN0dXJlID09IGdsb2JhbE9iamVjdC0+c2V0U3RydWN0
dXJlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGdldFByb3RvdHlwZURpcmVj
dCgpICE9IGdsb2JhbE9iamVjdC0+anNTZXRQcm90b3R5cGUoKSkKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFs
T2JqZWN0LT5qc1NldFByb3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGdldERpcmVjdE9mZnNldCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpICE9IGludmFsaWRPZmZzZXQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmluaXRpYWxpemVHCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGVy
cm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2UoKSk7CiAKLSAgICBKU1ZhbHVl
IG5leHRQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
IEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IGdsb2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT50eXBl
KCkgPT0gUHJveHlPYmplY3RUeXBlKSkgewogICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0g
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGds
b2JhbCBwcm90b3R5cGUgY2hhaW4uIikpOwogICAgICAgICB9Ci0gICAgICAgIG5leHRQcm90b3R5
cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAg
ICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQq
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Mywx
MyArMjQzLDE0IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6aXNWYWxpZChKU0dsb2JhbE8KICAg
ICBpZiAoIWNhY2hlZFByb3RvdHlwZUNoYWluKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBw
cm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBiYXNlKTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gY2FjaGVkUHJvdG90eXBlQ2hhaW4tPmhlYWQo
KTsKICAgICB3aGlsZSAoKmNhY2hlZFN0cnVjdHVyZSAmJiAhcHJvdG90eXBlLmlzTnVsbCgpKSB7
Ci0gICAgICAgIGlmIChhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSAhPSBjYWNoZWRT
dHJ1Y3R1cmUtPmdldCgpKQorICAgICAgICBpZiAoYXNPYmplY3QocHJvdG90eXBlKS0+c3RydWN0
dXJlKHZtKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICArK2NhY2hlZFN0cnVjdHVyZTsKLSAgICAgICAgcHJvdG90eXBlID0gYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIHByb3RvdHlw
ZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQog
ICAgIHJldHVybiBwcm90b3R5cGUuaXNOdWxsKCkgJiYgISpjYWNoZWRTdHJ1Y3R1cmU7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RP
cGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcy
LDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OgogICAgIC8vICAg
IDEuIElmIHByb3RvdHlwZSBpcyBub3QgYSBuYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCwgYW5kIHBy
b3RvdHlwZSBoYXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY2hlY2tpbmcgZm9yICduYW1lZCBwcm9wZXJ0aWVzIG9i
amVjdCcuCiAgICAgLy8gICAgMi4gU2V0IHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2YgdGhl
IGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgcHJvdG90eXBlLgotICAgIGF1dG8g
cHJvdG90eXBlID0gdGhpc09iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBhdXRvIHBy
b3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLnZtKCkpOwogICAg
IGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBKU0M6OmFzT2JqZWN0KHByb3RvdHlwZSktPmdl
dFByb3BlcnR5U2xvdCgmc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVO
YW1lZFByb3BlcnR5KEoKICAgICAvLyAgICAxLiBJZiBwcm90b3R5cGUgaXMgbm90IGEgbmFtZWQg
cHJvcGVydGllcyBvYmplY3QsIGFuZCBwcm90b3R5cGUgaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1l
ZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNoZWNraW5n
IGZvciAnbmFtZWQgcHJvcGVydGllcyBvYmplY3QnLgogICAgIC8vICAgIDIuIFNldCBwcm90b3R5
cGUgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBbW1Byb3RvdHlwZV1dIHByb3BlcnR5
IG9mIHByb3RvdHlwZS4KLSAgICBhdXRvIHByb3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90
eXBlRGlyZWN0KCk7CisgICAgYXV0byBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LmdldFByb3RvdHlw
ZURpcmVjdChzdGF0ZS52bSgpKTsKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgSlND
Ojphc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QoJnN0YXRlLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDIy
MzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdp
bmRvdyhKU0M6OlZNJiB2bSwgCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93
Kj4ob2JqZWN0KTsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0RPTVdpbmRvd1Byb3h5Ojpp
bmZvKCkpCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93UHJveHkqPihvYmpl
Y3QpLT53aW5kb3coKTsKLSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpOworICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAg
ICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMzcy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXM6OmdldE93blByb3BlcgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBpZiAoQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBKU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAg
SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0o
KSk7CiAgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganNDYXN0PEpTT2JqZWN0Kj4ocHJvdG8p
LT5oYXNQcm9wZXJ0eShzdGF0ZSwgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVu
dFByb3BlCiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNIVE1M
RWxlbWVudCogZWxlbWVudCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5nbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBwcm90byA9
IGVsZW1lbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU0M6OkpTVmFsdWUgcHJv
dG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSk7CiAgICAgICAgIGlm
IChwcm90by5pc09iamVjdCgpICYmIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVj
dChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjM3MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6aW5pdFNjcmlwdCgKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
cik7Ci0gICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIt
PmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlcik7CiAKICAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQu
Z2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC05NTQs
NyArOTU0LDcgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5z
ID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwg
Ik92ZXJyaWRlQnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNP
YmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50
IC49ICIgICAgIjsKICAgICAgICAgfQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgc3ViIEdlbmVyYXRl
UHV0QnlJbmRleAogICAgICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBp
ZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZt
KCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRp
b25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KQEAgLTcxMTQsNyArNzExNCw3IEBAIHN1
YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICMgb2Ygd2hldGhlciB0aGUg
aW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVu
ZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lu
dGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYgKFNob3VsZFVzZUdsb2JhbE9iamVjdFBy
b3RvdHlwZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5n
ZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFBy
b3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTtcbiIpOwogICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmlzQ2FsbGJhY2spIHsK
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpO1xuIik7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb24KIAogdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQ
cm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiVGVzdEdsb2JhbE9iamVjdCIpKSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0
ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0
KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkp
IHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3Rh
dGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIEpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRo
aXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsK
LSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgp
OworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkp
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUt
PnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+
KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAy
MjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBA
IC0yNDMsNyArMjQzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
ZwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRl
eCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3lt
Ym9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52
bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+
dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7Cisg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3Rh
dGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0o
KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0
YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyOjpwdXQoCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlw
ZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAg
IGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFBy
b3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAg
ICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZh
bHVlKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlm
aWVyOjpwdXRCCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3Rh
dGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uOgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAg
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2
YWx1ZSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uOgogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0
YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAg
ICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0
UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
cjo6cHUKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpA
QCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
cHUKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5k
ZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICgh
KHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXI6CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICgh
KHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsK
QEAgLTIzNiw3ICsyMzYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXI6CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGlu
ZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
c3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjIz
NzIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjExLDcgKzIxMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AK
IAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjMx
LDcgKzIzMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAog
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChz
dGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324311</attachid>
            <date>2017-10-19 16:25:33 -0700</date>
            <delta_ts>2017-10-19 16:27:59 -0700</delta_ts>
            <desc>test building on EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41959</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDcgKzk5Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihwb2ludGVyKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERP
TUdldHRlclNuaXBwZXQ+IGNhbGxET01HZXR0ZXIoKQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhpc09iamVjdCk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSkpOwogICAgIH0KIH07CiAKQEAgLTIyMTEsNyArMjIxMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCgpLCBJbXB1
cmVQcm94eVR5cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOwogICAgIEpTUHJveHkqIHByb3h5
ID0gSlNQcm94eTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb3h5KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw3
IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOyAKLSAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpKTsKKyAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dChleGVjLT52bSgpKSk7CiB9CiAKIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYQogICAgIH0KIAogICAgIHJldHVybiAhdGhpc09i
amVjdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpCi0gICAgICAgICYmIGFycmF5UHJvdG90eXBlID09
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpCisgICAgICAgICYmIGFycmF5UHJvdG90
eXBlID09IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChnbG9iYWxPYmplY3QtPnZtKCkp
CiAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRl
T25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXpl
ZFRvU3RyaW5nKAogICAgICAgICAgICAgbmFtZVZhbHVlID0gbmFtZVNsb3QuZ2V0VmFsdWUoZXhl
YywgbmFtZVByb3BlcnROYW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGN1cnJlbnRPYmogPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBjdXJy
ZW50T2JqID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgIH0KICAgICBzY29wZS5h
c3NlcnROb0V4Y2VwdGlvbigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTIsMTAgKzEyOTIsMTAg
QEAgYm9vbCBKU0FycmF5Ojppc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTgogICAgIGlmIChzdHJ1
Y3R1cmUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoZ2V0UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVByb3RvdHlwZSgpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAo
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSAhPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBpZiAoZ2V0RGlyZWN0T2Zmc2V0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCkgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJlY3QoKSk7CisgICAgcmVzZXRQ
cm90b3R5cGUodm0sIGdldFByb3RvdHlwZURpcmVjdCh2bSkpOwogfQogCiBib29sIEpTR2xvYmFs
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTEw
OTYsMTEgKzEwOTYsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJHbG9iYWxTY29wZUV4
dAogICAgIG1fZ2xvYmFsU2NvcGVFeHRlbnNpb24uY2xlYXIoKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU09iamVjdCogbGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKK3N0YXRp
YyBpbmxpbmUgSlNPYmplY3QqIGxhc3RJblByb3RvdHlwZUNoYWluKFZNJiB2bSwgSlNPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9IG9iamVjdDsKLSAgICB3aGlsZSAoby0+Z2V0
UHJvdG90eXBlRGlyZWN0KCkuaXNPYmplY3QoKSkKLSAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdl
dFByb3RvdHlwZURpcmVjdCgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KS5pc09iamVjdCgpKQorICAgICAgICBvID0gYXNPYmplY3Qoby0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTExNTAsMTMgKzExNTAsMTQgQEAgaW5saW5l
IHZvaWQgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgIC8vIFZNLiBCdXQgd2UgaGF2
ZSB0byBiZSBjYXJlZnVsLCBzaW5jZSB0aGVyZSBtYXkgYmUgb2JqZWN0cyB0aGF0IGNsYWltIHRv
IGJlbG9uZyB0bwogICAgIC8vIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QgdGhhdCBoYXZlIHBy
b3RvdHlwZXMgZnJvbSBvdXIgZ2xvYmFsIG9iamVjdC4KICAgICBib29sIGZvdW5kR2xvYmFsT2Jq
ZWN0ID0gZmFsc2U7CisgICAgVk0mIHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgZm9y
IChKU09iamVjdCogY3VycmVudCA9IG9iamVjdDsgOykgewogICAgICAgICBpZiAoY3VycmVudC0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxPYmplY3QpIHsKICAgICAgICAgICAgIGZvdW5kR2xv
YmFsT2JqZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VycmVudCA9IGFzT2JqZWN0KHByb3RvdHlw
ZVZhbHVlKTsKQEAgLTEyMjcsNyArMTIyOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0
UHJvdG90eXBlKFZNJiAKIHsKICAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIHByb3RvdHlwZSk7
CiAKLSAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5
cGVDaGFpbih0aGlzKTsKKyAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBs
YXN0SW5Qcm90b3R5cGVDaGFpbih2bSwgdGhpcyk7CiAgICAgSlNPYmplY3QqIG9iamVjdFByb3Rv
dHlwZSA9IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90b3R5
cGVDaGFpbiAhPSBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNo
YWluLT5zZXRQcm90b3R5cGVEaXJlY3Qodm0sIG9iamVjdFByb3RvdHlwZSk7CkBAIC0xNTI2LDcg
KzE1MjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgCiAgICAg
c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7CiAgICAgbV9ydW50aW1lRmxh
Z3MgPSBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRo
aXMpOwogICAgIGluaXQodm0pOwotICAgIHNldEdsb2JhbFRoaXModm0sIEpTUHJveHk6OmNyZWF0
ZSh2bSwgSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBnZXRQcm90b3R5cGVEaXJl
Y3QoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpLCB0aGlzKSk7CisgICAgc2V0R2xvYmFsVGhp
cyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGdldFByb3RvdHlwZURpcmVjdCh2bSksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhp
cykpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
T2JqZWN0KiB0aGlzVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19J
TkxJTkUgYm9vbCBKU0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKCkKIHsKICAg
ICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG1fb2JqZWN0UHJvdG90eXBlLT5pbmRleGlu
Z1R5cGUoKSkKLSAgICAgICAgJiYgbV9vYmplY3RQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVj
dCgpLmlzTnVsbCgpOworICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKCkpLmlzTnVsbCgpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNHbG9iYWxP
YmplY3Q6OmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5k
ZXhlZFByb3BlcnRpZXMobV9hcnJheVByb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAg
ICYmIG1fYXJyYXlQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpID09IG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpCisgICAgICAgICYmIG1fYXJyYXlQcm90b3R5cGUtPmdldFByb3RvdHlwZURp
cmVjdCh2bSgpKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQ
cm90b3R5cGVJc1NhbmUoKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEpTR2xvYmFsT2JqZWN0
OjpzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVk
UHJvcGVydGllcyhtX3N0cmluZ1Byb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYm
IG1fc3RyaW5nUHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKQorICAgICAgICAmJiBtX3N0cmluZ1Byb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKCkpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpCiAgICAgICAgICYmIG9iamVjdFBy
b3RvdHlwZUlzU2FuZSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyMjM3MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIEpTTGV4aWNhbEVudmly
b25tZW50OjpnZXRPd25Qcm9wZXJ0CiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdoIHRvIEpT
T2JqZWN0IGJlY2F1c2UgdGhlcmUncyBubyB3YXkgdG8gZ2l2ZSBhIAogICAgIC8vIGxleGljYWwg
ZW52aXJvbm1lbnQgb2JqZWN0IGdldHRlciBwcm9wZXJ0aWVzIG9yIGEgcHJvdG90eXBlLgogICAg
IEFTU0VSVCghdGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICBB
U1NFUlQodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkpOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSkuaXNOdWxsKCkp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTWFwLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgYm9v
bCBKU01hcDo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbgogICAgIGlmIChzdHJ1Y3R1cmUg
PT0gZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAoZ2V0UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5
cGUoKSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3Rv
dHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlm
IChnZXREaXJlY3RPZmZzZXQodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSAh
PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMxLDcgKzUzMSw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFt
ZShKU08KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwogICAgIFByb3BlcnR5TmFtZSBjb25zdHJ1Y3Rvcih2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1Ro
aXModGhpcywgZXhlYywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CiAKLSAgICBpZiAodGhpcy0+
Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gcHJvdG90eXBlKQorICAgIGlmICh0aGlzLT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTE2OTAs
NyArMTY5MCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTUzNAog
ICAgICAgICBpZiAoVU5MSUtFTFkoYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnR5cGUoKSA9PSBQ
cm94eU9iamVjdFR5cGUpKQogICAgICAgICAgICAgYnJlYWs7IC8vIFdlJ3JlIGRvbmUuIFNldCB0
aGUgcHJvdG90eXBlLgotICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3Rv
dHlwZSktPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNP
YmplY3QobmV4dFByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQogICAg
IHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE3MDEsOSArMTcwMSw5IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCog
b2IKICAgICByZXR1cm4gb2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52
bSgpLCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAotSlNWYWx1
ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSopCitK
U1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
IHJldHVybiBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChleGVjLT52bSgpKTsKIH0KIAogYm9v
bCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKQEAgLTI1MzgsNiArMjUzOCw3
IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgKIAogYm9vbCBKU09i
amVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAg
ICAvLyBUaGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciB3aXRoIHJlc3BlY3QgdG8gcHJvdG90eXBl
cyBhcyBKU09iamVjdDo6cHV0KCkuIEl0IG9ubHkKICAgICAgICAgLy8gYWxsb3dzIGEgcHJvdG90
eXBlIHRvIGludGVyY2VwdCBhIHB1dCBpZiAoYSkgdGhlIHByb3RvdHlwZSBkZWNsYXJlcyB0aGUg
cHJvcGVydHkKQEAgLTI1NTksNyArMjU2MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90
eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5n
ZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMjU2OSw3ICsyNTcw
LDcgQEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogCiBib29sIEpT
T2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0
UmVzdWx0KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVEaXJl
Y3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBlRGlyZWN0KGV4
ZWMtPnZtKCkpOwogICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIApAQCAtMzY4MCw3ICszNjgxLDcgQEAgYm9vbCBKU09iamVjdDo6YW55
T2JqZWN0SW5DaGFpbk1heUludGVyYwogICAgICAgICBpZiAoY3VycmVudC0+c3RydWN0dXJlKHZt
KS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0zNjk0LDcgKzM2OTUsNyBAQCBi
b29sIEpTT2JqZWN0Ojpwcm90b3R5cGVDaGFpbk1heUludGVyY2VwCiAgICAgICAgIHJldHVybiBh
bnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCk7CiAgICAgCiAgICAg
Zm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAo
cHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24g
MjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBJdCBpcyB2YWxp
ZCB0byB1c2UgdGhvdWdoIHdoZW4geW91IGtub3cgdGhhdCB5b3Ugd2FudCB0byBkaXJlY3RseSBn
ZXQgaXQKICAgICAvLyB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIG1ldGhvZCB0YWJsZS4gVGhpcyBp
cyBha2luIHRvIGdldHRpbmcgdGhlIFtbUHJvdG90eXBlXV0KICAgICAvLyBpbnRlcm5hbCBmaWVs
ZCBkaXJlY3RseSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgSlNWYWx1
ZSBnZXRQcm90b3R5cGVEaXJlY3QoKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZURp
cmVjdChWTSYpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBzZXRzIHRoZSBwcm90b3R5cGUgd2l0aG91
dCBjaGVja2luZyBmb3IgY3ljbGVzIGFuZCB3aXRob3V0CiAgICAgLy8gZG9pbmcgZHluYW1pYyBk
aXNwYXRjaCBvbiBbW1NldFByb3RvdHlwZU9mXV0gb3BlcmF0aW9uIGluIHRoZSBzcGVjaWZpY2F0
aW9uLgpAQCAtODczLDcgKzg3Myw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90
b3R5cGVEaXJlY3QoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAo
Z2V0UHJvdG90eXBlRGlyZWN0KCkpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQ
b2x5UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6Omhl
YXAodGhpcykgPT0gSGVhcDo6aGVhcChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7CiAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0lu
Zm8odm0pKTsKICAgICB9CkBAIC0xMzAzLDkgKzEzMDMsOSBAQCBpbmxpbmUgSlNPYmplY3Q6OkpT
T2JqZWN0KFZNJiB2bSwgU3RydWN0CiB7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpn
ZXRQcm90b3R5cGVEaXJlY3QoKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFBy
b3RvdHlwZURpcmVjdChWTSYgdm0pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5z
dG9yZWRQcm90b3R5cGUodGhpcyk7CisgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPnN0b3JlZFBy
b3RvdHlwZSh0aGlzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlw
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEzMTMsNyArMTMxMyw3IEBAIGlubGluZSBK
U1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0KICAgICBhdXRvIGdldFByb3RvdHlwZU1l
dGhvZCA9IG1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvdG90eXBlOwogICAgIE1ldGhvZFRhYmxlOjpH
ZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6Omdl
dFByb3RvdHlwZTsKICAgICBpZiAoTElLRUxZKGdldFByb3RvdHlwZU1ldGhvZCA9PSBkZWZhdWx0
R2V0UHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIGdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICByZXR1cm4gZ2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICByZXR1cm4gZ2V0UHJvdG90
eXBlTWV0aG9kKHRoaXMsIGV4ZWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJm
b3JtRgogICAgICAgICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2JqLT5tZXRob2RUYWJsZSh2bSkt
PmdldFByb3RvdHlwZSAhPSBkZWZhdWx0R2V0UHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CisgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBA
IC0xMTYsNyArMTE2LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOwog
ICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdl
dFByb3RvdHlwZSA9PSBkZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RU
eXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCi0g
ICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE5v
bkluZGV4CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgICAgIGlm
IChMSUtFTFkoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBl
ID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKLSAgICAgICAgICAg
IHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDIyMzcy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNQcm94eTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwKIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIGdsb2JhbE9iamVj
dCk7Ci0gICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCgpKTsKKyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKSk7CiB9CiAKIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29u
c3QgSlNPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NldC5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIGJvb2wgSlNT
ZXQ6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb24KICAgICBpZiAoc3RydWN0dXJlID09IGds
b2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKGdldFByb3RvdHlwZURpcmVjdCgpICE9IGdsb2JhbE9iamVjdC0+anNTZXRQcm90b3R5cGUo
KSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlw
ZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5qc1NldFByb3RvdHlwZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYg
KGdldERpcmVjdE9mZnNldCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3Vy
Y2UoKSk7CiAKLSAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IGdsb2JhbE9iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBu
ZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0
KG5leHRQcm90b3R5cGUpLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSkgewogICAgICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaXMg
bm90IGFsbG93ZWQgaW4gdGhlIGdsb2JhbCBwcm90b3R5cGUgY2hhaW4uIikpOwogICAgICAgICB9
Ci0gICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJv
dG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyMjM3MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0MywxMyArMjQzLDE0IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6
aXNWYWxpZChKU0dsb2JhbE8KICAgICBpZiAoIWNhY2hlZFByb3RvdHlwZUNoYWluKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBiYXNl
KTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gY2FjaGVk
UHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsKICAgICB3aGlsZSAoKmNhY2hlZFN0cnVjdHVyZSAmJiAh
cHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChhc09iamVjdChwcm90b3R5cGUpLT5z
dHJ1Y3R1cmUoKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQorICAgICAgICBpZiAoYXNPYmpl
Y3QocHJvdG90eXBlKS0+c3RydWN0dXJlKHZtKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICArK2NhY2hlZFN0cnVjdHVyZTsKLSAg
ICAgICAgcHJvdG90eXBlID0gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0
KCk7CisgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlw
ZURpcmVjdCh2bSk7CiAgICAgfQogICAgIHJldHVybiBwcm90b3R5cGUuaXNOdWxsKCkgJiYgISpj
YWNoZWRTdHJ1Y3R1cmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9w
ZXJ0eShKU0M6OgogICAgIC8vICAgIDEuIElmIHByb3RvdHlwZSBpcyBub3QgYSBuYW1lZCBwcm9w
ZXJ0aWVzIG9iamVjdCwgYW5kIHByb3RvdHlwZSBoYXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAs
IHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY2hlY2tpbmcgZm9y
ICduYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCcuCiAgICAgLy8gICAgMi4gU2V0IHByb3RvdHlwZSB0
byBiZSB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2Yg
cHJvdG90eXBlLgotICAgIGF1dG8gcHJvdG90eXBlID0gdGhpc09iamVjdC5nZXRQcm90b3R5cGVE
aXJlY3QoKTsKKyAgICBhdXRvIHByb3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGly
ZWN0KHN0YXRlLnZtKCkpOwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBKU0M6OmFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdCgmc3RhdGUsIHByb3BlcnR5TmFtZSwg
c2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRp
YyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEoKICAgICAvLyAgICAxLiBJZiBwcm90
b3R5cGUgaXMgbm90IGEgbmFtZWQgcHJvcGVydGllcyBvYmplY3QsIGFuZCBwcm90b3R5cGUgaGFz
IGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGNoZWNraW5nIGZvciAnbmFtZWQgcHJvcGVydGllcyBvYmplY3QnLgogICAg
IC8vICAgIDIuIFNldCBwcm90b3R5cGUgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBb
W1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIHByb3RvdHlwZS4KLSAgICBhdXRvIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgYXV0byBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS52bSgpKTsKICAgICBpZiAocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgSlNDOjphc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QoJnN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBK
U0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OlZNJiB2bSwgCiAgICAgICAgICAgICByZXR1
cm4ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU0RPTVdpbmRvd1Byb3h5OjppbmZvKCkpCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpT
RE9NV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKTsKLSAgICAgICAgdmFsdWUgPSBvYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGll
cy5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93UHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
Ym9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcgogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganND
YXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9wZXJ0eShzdGF0ZSwgcHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIy
MzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlCiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3QoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYg
KCFlbGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAg
IEpTQzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICBKU0M6OkpTVmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhl
Yy0+dm0oKSk7CiAgICAgICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIEpTQzo6anNDYXN0PEpT
Qzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0
eU5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICB9CiAgICAgCiAgICAg
QVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKSktPmdsb2JhbE9iamVjdCgpID09
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKICAgICBtX2NvbnNvbGVD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckds
b2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNs
aWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIyMzcyMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC05NTQsNyArOTU0LDcgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAg
IG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRB
dHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEk
b3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0
YXRlLT52bSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKICAgICAgICAg
ICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQpAQCAtMTAyMyw3ICsx
MDIzLDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICBteSAkYWRkaXRpb25hbElu
ZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7
CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KQEAg
LTcxMTQsNyArNzExNCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwog
ICAgICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTm9J
bnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYgKFNo
b3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgIH0gZWxzaWYgKCRpbnRl
cmZhY2UtPmlzQ2FsbGJhY2spIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9i
YWxPYmplY3RDb24KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZt
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEdsb2JhbE9iamVjdCIpKSksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzIw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3
ICsyMTUsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwg
cHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTI0Myw3ICsy
NDMsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUs
IHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZt
KCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52
bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0
ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgp
KTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIy
NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjUyLDcgKzI1Miw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJv
cGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoCiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChz
dGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90
KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
c3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBib29sIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3Rh
dGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
c3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3lt
Ym9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52
bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+
dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7Cisg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3Rh
dGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0o
KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0
YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+
dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUt
PnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwor
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0
YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZt
KCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjIzNzIw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQog
CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3Rh
dGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNTIs
NyArMjUyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogCiAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
IHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsK
ICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7
CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgdmFsdWUpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZt
KCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlw
ZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAg
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2
YWx1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324312</attachid>
            <date>2017-10-19 16:27:59 -0700</date>
            <delta_ts>2017-10-19 23:59:39 -0700</delta_ts>
            <desc>test building on EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>41959</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDcgKzk5Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgICAgICAgICBKU09iamVj
dCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihwb2ludGVyKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERP
TUdldHRlclNuaXBwZXQ+IGNhbGxET01HZXR0ZXIoKQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhpc09iamVjdCk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCh2bSkpOwogICAgIH0KIH07CiAKQEAgLTIyMTEsNyArMjIxMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTT2JqZWN0KiBqc1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCgpLCBJbXB1
cmVQcm94eVR5cGUpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOwogICAgIEpTUHJveHkqIHByb3h5
ID0gSlNQcm94eTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb3h5KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw3
IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOyAKLSAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpKTsKKyAgICByZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dChleGVjLT52bSgpKSk7CiB9CiAKIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYQogICAgIH0KIAogICAgIHJldHVybiAhdGhpc09i
amVjdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpCi0gICAgICAgICYmIGFycmF5UHJvdG90eXBlID09
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpCisgICAgICAgICYmIGFycmF5UHJvdG90
eXBlID09IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChnbG9iYWxPYmplY3QtPnZtKCkp
CiAgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRl
T25KU1RocmVhZCgpID09IElzV2F0Y2hlZDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXpl
ZFRvU3RyaW5nKAogICAgICAgICAgICAgbmFtZVZhbHVlID0gbmFtZVNsb3QuZ2V0VmFsdWUoZXhl
YywgbmFtZVByb3BlcnROYW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGN1cnJlbnRPYmogPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBjdXJy
ZW50T2JqID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgIH0KICAgICBzY29wZS5h
c3NlcnROb0V4Y2VwdGlvbigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTIsMTAgKzEyOTIsMTAg
QEAgYm9vbCBKU0FycmF5Ojppc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTgogICAgIGlmIChzdHJ1
Y3R1cmUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoZ2V0UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVByb3RvdHlwZSgpKQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAo
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSAhPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBpZiAoZ2V0RGlyZWN0T2Zmc2V0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCkgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJlY3QoKSk7CisgICAgcmVzZXRQ
cm90b3R5cGUodm0sIGdldFByb3RvdHlwZURpcmVjdCh2bSkpOwogfQogCiBib29sIEpTR2xvYmFs
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTEw
OTYsMTEgKzEwOTYsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJHbG9iYWxTY29wZUV4
dAogICAgIG1fZ2xvYmFsU2NvcGVFeHRlbnNpb24uY2xlYXIoKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU09iamVjdCogbGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKK3N0YXRp
YyBpbmxpbmUgSlNPYmplY3QqIGxhc3RJblByb3RvdHlwZUNoYWluKFZNJiB2bSwgSlNPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBKU09iamVjdCogbyA9IG9iamVjdDsKLSAgICB3aGlsZSAoby0+Z2V0
UHJvdG90eXBlRGlyZWN0KCkuaXNPYmplY3QoKSkKLSAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdl
dFByb3RvdHlwZURpcmVjdCgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KS5pc09iamVjdCgpKQorICAgICAgICBvID0gYXNPYmplY3Qoby0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTExNTAsMTMgKzExNTAsMTQgQEAgaW5saW5l
IHZvaWQgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgIC8vIFZNLiBCdXQgd2UgaGF2
ZSB0byBiZSBjYXJlZnVsLCBzaW5jZSB0aGVyZSBtYXkgYmUgb2JqZWN0cyB0aGF0IGNsYWltIHRv
IGJlbG9uZyB0bwogICAgIC8vIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QgdGhhdCBoYXZlIHBy
b3RvdHlwZXMgZnJvbSBvdXIgZ2xvYmFsIG9iamVjdC4KICAgICBib29sIGZvdW5kR2xvYmFsT2Jq
ZWN0ID0gZmFsc2U7CisgICAgVk0mIHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgZm9y
IChKU09iamVjdCogY3VycmVudCA9IG9iamVjdDsgOykgewogICAgICAgICBpZiAoY3VycmVudC0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV9nbG9iYWxPYmplY3QpIHsKICAgICAgICAgICAgIGZvdW5kR2xv
YmFsT2JqZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3VycmVudCA9IGFzT2JqZWN0KHByb3RvdHlw
ZVZhbHVlKTsKQEAgLTEyMjcsNyArMTIyOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0
UHJvdG90eXBlKFZNJiAKIHsKICAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIHByb3RvdHlwZSk7
CiAKLSAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5
cGVDaGFpbih0aGlzKTsKKyAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBs
YXN0SW5Qcm90b3R5cGVDaGFpbih2bSwgdGhpcyk7CiAgICAgSlNPYmplY3QqIG9iamVjdFByb3Rv
dHlwZSA9IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90b3R5
cGVDaGFpbiAhPSBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNo
YWluLT5zZXRQcm90b3R5cGVEaXJlY3Qodm0sIG9iamVjdFByb3RvdHlwZSk7CkBAIC0xNTI2LDcg
KzE1MjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgCiAgICAg
c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7CiAgICAgbV9ydW50aW1lRmxh
Z3MgPSBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRo
aXMpOwogICAgIGluaXQodm0pOwotICAgIHNldEdsb2JhbFRoaXModm0sIEpTUHJveHk6OmNyZWF0
ZSh2bSwgSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBnZXRQcm90b3R5cGVEaXJl
Y3QoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpLCB0aGlzKSk7CisgICAgc2V0R2xvYmFsVGhp
cyh2bSwgSlNQcm94eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGdldFByb3RvdHlwZURpcmVjdCh2bSksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhp
cykpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
T2JqZWN0KiB0aGlzVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzIwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19J
TkxJTkUgYm9vbCBKU0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKCkKIHsKICAg
ICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG1fb2JqZWN0UHJvdG90eXBlLT5pbmRleGlu
Z1R5cGUoKSkKLSAgICAgICAgJiYgbV9vYmplY3RQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVj
dCgpLmlzTnVsbCgpOworICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKCkpLmlzTnVsbCgpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNHbG9iYWxP
YmplY3Q6OmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5k
ZXhlZFByb3BlcnRpZXMobV9hcnJheVByb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAg
ICYmIG1fYXJyYXlQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpID09IG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpCisgICAgICAgICYmIG1fYXJyYXlQcm90b3R5cGUtPmdldFByb3RvdHlwZURp
cmVjdCh2bSgpKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQ
cm90b3R5cGVJc1NhbmUoKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEpTR2xvYmFsT2JqZWN0
OjpzdHJpbmdQcm90b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVk
UHJvcGVydGllcyhtX3N0cmluZ1Byb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYm
IG1fc3RyaW5nUHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKQorICAgICAgICAmJiBtX3N0cmluZ1Byb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKCkpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpCiAgICAgICAgICYmIG9iamVjdFBy
b3RvdHlwZUlzU2FuZSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyMjM3MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIEpTTGV4aWNhbEVudmly
b25tZW50OjpnZXRPd25Qcm9wZXJ0CiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdoIHRvIEpT
T2JqZWN0IGJlY2F1c2UgdGhlcmUncyBubyB3YXkgdG8gZ2l2ZSBhIAogICAgIC8vIGxleGljYWwg
ZW52aXJvbm1lbnQgb2JqZWN0IGdldHRlciBwcm9wZXJ0aWVzIG9yIGEgcHJvdG90eXBlLgogICAg
IEFTU0VSVCghdGhpc09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICBB
U1NFUlQodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkpOworICAgIEFT
U0VSVCh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSkuaXNOdWxsKCkp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTWFwLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgYm9v
bCBKU01hcDo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbgogICAgIGlmIChzdHJ1Y3R1cmUg
PT0gZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAoZ2V0UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5
cGUoKSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3Rv
dHlwZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlm
IChnZXREaXJlY3RPZmZzZXQodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSAh
PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMxLDcgKzUzMSw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFt
ZShKU08KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwogICAgIFByb3BlcnR5TmFtZSBjb25zdHJ1Y3Rvcih2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGNvbnN0cnVjdG9yLCBzbG90KSkgewogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1Ro
aXModGhpcywgZXhlYywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CiAKLSAgICBpZiAodGhpcy0+
Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gcHJvdG90eXBlKQorICAgIGlmICh0aGlzLT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTE2OTAs
NyArMTY5MCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTUzNAog
ICAgICAgICBpZiAoVU5MSUtFTFkoYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnR5cGUoKSA9PSBQ
cm94eU9iamVjdFR5cGUpKQogICAgICAgICAgICAgYnJlYWs7IC8vIFdlJ3JlIGRvbmUuIFNldCB0
aGUgcHJvdG90eXBlLgotICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3Rv
dHlwZSktPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNP
YmplY3QobmV4dFByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQogICAg
IHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE3MDEsOSArMTcwMSw5IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCog
b2IKICAgICByZXR1cm4gb2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52
bSgpLCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAotSlNWYWx1
ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSopCitK
U1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
IHJldHVybiBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChleGVjLT52bSgpKTsKIH0KIAogYm9v
bCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKQEAgLTI1MzgsNiArMjUzOCw3
IEBAIHZvaWQgSlNPYmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgKIAogYm9vbCBKU09i
amVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAg
ICAvLyBUaGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciB3aXRoIHJlc3BlY3QgdG8gcHJvdG90eXBl
cyBhcyBKU09iamVjdDo6cHV0KCkuIEl0IG9ubHkKICAgICAgICAgLy8gYWxsb3dzIGEgcHJvdG90
eXBlIHRvIGludGVyY2VwdCBhIHB1dCBpZiAoYSkgdGhlIHByb3RvdHlwZSBkZWNsYXJlcyB0aGUg
cHJvcGVydHkKQEAgLTI1NTksNyArMjU2MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0lu
dGVyY2VwdFB1dEJ5SW4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90
eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5n
ZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMjU2OSw3ICsyNTcw
LDcgQEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogCiBib29sIEpT
T2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0
UmVzdWx0KQogewotICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVEaXJl
Y3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBlRGlyZWN0KGV4
ZWMtPnZtKCkpOwogICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIApAQCAtMzY4MCw3ICszNjgxLDcgQEAgYm9vbCBKU09iamVjdDo6YW55
T2JqZWN0SW5DaGFpbk1heUludGVyYwogICAgICAgICBpZiAoY3VycmVudC0+c3RydWN0dXJlKHZt
KS0+bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0zNjk0LDcgKzM2OTUsNyBAQCBi
b29sIEpTT2JqZWN0Ojpwcm90b3R5cGVDaGFpbk1heUludGVyY2VwCiAgICAgICAgIHJldHVybiBh
bnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCk7CiAgICAgCiAgICAg
Zm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAo
cHJvdG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24g
MjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBJdCBpcyB2YWxp
ZCB0byB1c2UgdGhvdWdoIHdoZW4geW91IGtub3cgdGhhdCB5b3Ugd2FudCB0byBkaXJlY3RseSBn
ZXQgaXQKICAgICAvLyB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIG1ldGhvZCB0YWJsZS4gVGhpcyBp
cyBha2luIHRvIGdldHRpbmcgdGhlIFtbUHJvdG90eXBlXV0KICAgICAvLyBpbnRlcm5hbCBmaWVs
ZCBkaXJlY3RseSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgSlNWYWx1
ZSBnZXRQcm90b3R5cGVEaXJlY3QoKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZURp
cmVjdChWTSYpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBzZXRzIHRoZSBwcm90b3R5cGUgd2l0aG91
dCBjaGVja2luZyBmb3IgY3ljbGVzIGFuZCB3aXRob3V0CiAgICAgLy8gZG9pbmcgZHluYW1pYyBk
aXNwYXRjaCBvbiBbW1NldFByb3RvdHlwZU9mXV0gb3BlcmF0aW9uIGluIHRoZSBzcGVjaWZpY2F0
aW9uLgpAQCAtODczLDcgKzg3Myw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90
b3R5cGVEaXJlY3QoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAo
Z2V0UHJvdG90eXBlRGlyZWN0KCkpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQ
b2x5UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6Omhl
YXAodGhpcykgPT0gSGVhcDo6aGVhcChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7CiAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0lu
Zm8odm0pKTsKICAgICB9CkBAIC0xMzAzLDkgKzEzMDMsOSBAQCBpbmxpbmUgSlNPYmplY3Q6OkpT
T2JqZWN0KFZNJiB2bSwgU3RydWN0CiB7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpn
ZXRQcm90b3R5cGVEaXJlY3QoKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFBy
b3RvdHlwZURpcmVjdChWTSYgdm0pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5z
dG9yZWRQcm90b3R5cGUodGhpcyk7CisgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPnN0b3JlZFBy
b3RvdHlwZSh0aGlzKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlw
ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEzMTMsNyArMTMxMyw3IEBAIGlubGluZSBK
U1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0KICAgICBhdXRvIGdldFByb3RvdHlwZU1l
dGhvZCA9IG1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvdG90eXBlOwogICAgIE1ldGhvZFRhYmxlOjpH
ZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6Omdl
dFByb3RvdHlwZTsKICAgICBpZiAoTElLRUxZKGdldFByb3RvdHlwZU1ldGhvZCA9PSBkZWZhdWx0
R2V0UHJvdG90eXBlKSkKLSAgICAgICAgcmV0dXJuIGdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICByZXR1cm4gZ2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICByZXR1cm4gZ2V0UHJvdG90
eXBlTWV0aG9kKHRoaXMsIGV4ZWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDcgKzczLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJm
b3JtRgogICAgICAgICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2JqLT5tZXRob2RUYWJsZSh2bSkt
PmdldFByb3RvdHlwZSAhPSBkZWZhdWx0R2V0UHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CisgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBA
IC0xMTYsNyArMTE2LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOwog
ICAgICAgICBpZiAoTElLRUxZKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdl
dFByb3RvdHlwZSA9PSBkZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RU
eXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCi0g
ICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE5v
bkluZGV4CiAgICAgICAgIH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgICAgIGlm
IChMSUtFTFkoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBl
ID09IGRlZmF1bHRHZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKLSAgICAgICAgICAg
IHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDIyMzcy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSlNQcm94eTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwKIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIGdsb2JhbE9iamVj
dCk7Ci0gICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCgpKTsKKyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKSk7CiB9CiAKIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29u
c3QgSlNPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NldC5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIGJvb2wgSlNT
ZXQ6OmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb24KICAgICBpZiAoc3RydWN0dXJlID09IGds
b2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKGdldFByb3RvdHlwZURpcmVjdCgpICE9IGdsb2JhbE9iamVjdC0+anNTZXRQcm90b3R5cGUo
KSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlw
ZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5qc1NldFByb3RvdHlwZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYg
KGdldERpcmVjdE9mZnNldCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMjIzNzIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3Vy
Y2UoKSk7CiAKLSAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IGdsb2JhbE9iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBu
ZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0
KG5leHRQcm90b3R5cGUpLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSkgewogICAgICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaXMg
bm90IGFsbG93ZWQgaW4gdGhlIGdsb2JhbCBwcm90b3R5cGUgY2hhaW4uIikpOwogICAgICAgICB9
Ci0gICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJv
dG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyMjM3MjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0MywxMyArMjQzLDE0IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6
aXNWYWxpZChKU0dsb2JhbE8KICAgICBpZiAoIWNhY2hlZFByb3RvdHlwZUNoYWluKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBiYXNl
KTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gY2FjaGVk
UHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsKICAgICB3aGlsZSAoKmNhY2hlZFN0cnVjdHVyZSAmJiAh
cHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChhc09iamVjdChwcm90b3R5cGUpLT5z
dHJ1Y3R1cmUoKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQorICAgICAgICBpZiAoYXNPYmpl
Y3QocHJvdG90eXBlKS0+c3RydWN0dXJlKHZtKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICArK2NhY2hlZFN0cnVjdHVyZTsKLSAg
ICAgICAgcHJvdG90eXBlID0gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0
KCk7CisgICAgICAgIHByb3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlw
ZURpcmVjdCh2bSk7CiAgICAgfQogICAgIHJldHVybiBwcm90b3R5cGUuaXNOdWxsKCkgJiYgISpj
YWNoZWRTdHJ1Y3R1cmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9w
ZXJ0eShKU0M6OgogICAgIC8vICAgIDEuIElmIHByb3RvdHlwZSBpcyBub3QgYSBuYW1lZCBwcm9w
ZXJ0aWVzIG9iamVjdCwgYW5kIHByb3RvdHlwZSBoYXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAs
IHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY2hlY2tpbmcgZm9y
ICduYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCcuCiAgICAgLy8gICAgMi4gU2V0IHByb3RvdHlwZSB0
byBiZSB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2Yg
cHJvdG90eXBlLgotICAgIGF1dG8gcHJvdG90eXBlID0gdGhpc09iamVjdC5nZXRQcm90b3R5cGVE
aXJlY3QoKTsKKyAgICBhdXRvIHByb3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGly
ZWN0KHN0YXRlLnZtKCkpOwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBKU0M6OmFz
T2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdCgmc3RhdGUsIHByb3BlcnR5TmFtZSwg
c2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRp
YyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEoKICAgICAvLyAgICAxLiBJZiBwcm90
b3R5cGUgaXMgbm90IGEgbmFtZWQgcHJvcGVydGllcyBvYmplY3QsIGFuZCBwcm90b3R5cGUgaGFz
IGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGNoZWNraW5nIGZvciAnbmFtZWQgcHJvcGVydGllcyBvYmplY3QnLgogICAg
IC8vICAgIDIuIFNldCBwcm90b3R5cGUgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBb
W1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIHByb3RvdHlwZS4KLSAgICBhdXRvIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgYXV0byBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS52bSgpKTsKICAgICBpZiAocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgSlNDOjphc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3QoJnN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBK
U0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OlZNJiB2bSwgCiAgICAgICAgICAgICByZXR1
cm4ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU0RPTVdpbmRvd1Byb3h5OjppbmZvKCkpCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpT
RE9NV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKTsKLSAgICAgICAgdmFsdWUgPSBvYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGll
cy5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93UHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
Ym9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcgogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAoQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganND
YXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9wZXJ0eShzdGF0ZSwgcHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIy
MzcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlCiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRP
d25Qcm9wZXJ0eVNsb3QoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYg
KCFlbGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAg
IEpTQzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICBKU0M6OkpTVmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhl
Yy0+dm0oKSk7CiAgICAgICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIEpTQzo6anNDYXN0PEpT
Qzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0
eU5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICB9CiAgICAgCiAgICAg
QVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKSktPmdsb2JhbE9iamVjdCgpID09
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNPYmplY3QobV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKICAgICBtX2NvbnNvbGVD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckds
b2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNs
aWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIyMzcyMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC05NTQsNyArOTU0LDcgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAg
IG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRB
dHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEk
b3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0
YXRlLT52bSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQ
cm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4iKTsKICAgICAgICAg
ICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQpAQCAtMTAyMyw3ICsx
MDIzLDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICBteSAkYWRkaXRpb25hbElu
ZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90
eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7
CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAgICAgICAgIH0KQEAg
LTcxMTQsNyArNzExNCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwog
ICAgICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTm9J
bnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0CiAgICAgaWYgKFNo
b3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgIH0gZWxzaWYgKCRpbnRl
cmZhY2UtPmlzQ2FsbGJhY2spIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9i
YWxPYmplY3RDb24KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZt
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEdsb2JhbE9iamVjdCIpKSksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzIw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3
ICsyMTUsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAg
ICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5p
c09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwg
cHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTI0Myw3ICsy
NDMsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUs
IHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZt
KCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52
bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0
ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgp
KTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIy
NCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjUyLDcgKzI1Miw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJv
cGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5v
SWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIEpT
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoCiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChz
dGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90
KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
c3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBib29sIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3Rh
dGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgaWYgKCFwcm9wZXJ0eU5h
bWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
c3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09i
amVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xv
dCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyMzcyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3lt
Ym9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52
bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewog
ICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+
dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7Cisg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3Rh
dGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0o
KSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0
YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMjM3MjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5
bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+
dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsK
ICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUt
PnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBib29sIEpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOwor
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0
YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChw
cm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZt
KCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2aXNpb24gMjIzNzIw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQog
CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3Rh
dGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNTIs
NyArMjUyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogCiAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAg
ICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90
eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZv
cmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzLmNwcAkocmV2aXNpb24gMjIzNzIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
IHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsK
ICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBl
KS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7
CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgdmFsdWUpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFs
dWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZt
KCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlw
ZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAg
ICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2
YWx1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324364</attachid>
            <date>2017-10-19 23:59:39 -0700</date>
            <delta_ts>2017-10-20 00:10:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>48412</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDE3LTEwLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE9wdGltaXplIGFjY2Vzc2VzIHRvIGhvdyB3ZSBnZXQgdGhlIGRpcmVjdCBwcm90b3R5cGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODU0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
bWFrZXMgSlNPYmplY3Q6OmdldFByb3RvdHlwZURpcmVjdCB0YWtlIFZNJiBhcyBhIHBhcmFtZXRl
cgorICAgICAgICBzbyBpdCBjYW4gdXNlIHRoZSBmYXN0ZXIgdmVyc2lvbiBvZiB0aGUgc3RydWN0
dXJlIGFjY2Vzc29yIGZ1bmN0aW9uLgorICAgICAgICBUaGUgcmVhc29uIGZvciBtYWtpbmcgdGhp
cyBjaGFuZ2UgaXMgdGhhdCBKU09iamV0OjpnZXRQcm90b3R5cGVEaXJlY3QKKyAgICAgICAgaXMg
Y2FsbGVkIG9uIHRoZSBob3QgcGF0aCBpbiBwcm9wZXJ0eSBsb29rdXAuCisKKyAgICAgICAgKiBB
UEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RHZXRQcm90b3R5cGUpOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckJhc2VKU09iamVjdDo6
RE9NSklUQXR0cmlidXRlOjpzbG93Q2FsbCk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckJh
c2VKU09iamVjdDo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlUHJveHkp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpz
cGVjaWVzV2F0Y2hwb2ludElzVmFsaWQpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9ySW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpp
c0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKEpTQzo6bGFzdEluUHJvdG90eXBlQ2hhaW4pOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmplY3RQcm90b3R5cGVJ
c1NhbmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlQcm90b3R5cGVDaGFp
bklzU2FuZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90b3R5cGVD
aGFpbklzU2FuZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHA6
CisgICAgICAgIChKU0M6OkpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXAuY3BwOgorICAgICAgICAoSlNDOjpKU01hcDo6aXNJ
dGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFt
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25I
b2xlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJvdG90
eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldE5vbkluZGV4UHJvcGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJveHkuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3h5OjpzZXRUYXJnZXQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTZXQuY3BwOgorICAgICAgICAoSlNDOjpKU1NldDo6aXNJdGVyYXRvclByb3Rv
Y29sRmFzdEFuZE5vbk9ic2VydmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUds
b2JhbFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzVmFsaWQgY29uc3QpOgorCiAyMDE3LTEwLTE5ICBK
RiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTog
bm8gVk0gLyBKUyB2ZXJzaW9uIG9mIGV2ZXJ5dGhpbmcgYnV0IEluc3RhbmNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5Niw3ICs5OTYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocG9pbnRlcik7Ci0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01HZXR0ZXJTbmlw
cGV0PiBjYWxsRE9NR2V0dGVyKCkKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNPYmplY3QpOwotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
KTsKICAgICB9CiB9OwogCkBAIC0yMjExLDcgKzIyMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlCiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU09iamVjdCog
anNUYXJnZXQgPSBhc09iamVjdCh0YXJnZXQuYXNDZWxsKCkpOwotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSW1wdXJlUHJveHlUeXBl
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTUHJveHk6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc1RhcmdldC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKSwgSW1wdXJlUHJveHlUeXBlKTsKICAgICBKU1Byb3h5KiBwcm94eSA9IEpTUHJveHk6
OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBqc1RhcmdldCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwcm94eSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBKU1ZhbHVl
UmVmIEpTT2JqZWN0R2V0UHJvdG90eXBlKEpTQ29udGV4CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cihleGVjKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsgCi0gICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIGpzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7CisgICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIGpzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0o
KSkpOwogfQogCiB2b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIyMzc0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVj
aWVzV2F0Y2hwb2ludElzVmEKICAgICB9CiAKICAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhhc0N1
c3RvbVByb3BlcnRpZXMoKQotICAgICAgICAmJiBhcnJheVByb3RvdHlwZSA9PSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoKQorICAgICAgICAmJiBhcnJheVByb3RvdHlwZSA9PSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoZ2xvYmFsT2JqZWN0LT52bSgpKQogICAgICAgICAm
JiBnbG9iYWxPYmplY3QtPmFycmF5U3BlY2llc1dhdGNocG9pbnQoKS5zdGF0ZU9uSlNUaHJlYWQo
KSA9PSBJc1dhdGNoZWQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDcgKzE2Miw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygK
ICAgICAgICAgICAgIG5hbWVWYWx1ZSA9IG5hbWVTbG90LmdldFZhbHVlKGV4ZWMsIG5hbWVQcm9w
ZXJ0TmFtZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjdXJyZW50
T2JqID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgY3VycmVudE9iaiA9IG9i
ai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkyLDEwICsxMjkyLDEwIEBAIGJvb2wgSlNB
cnJheTo6aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE4KICAgICBpZiAoc3RydWN0dXJlLT5tYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGdldFByb3RvdHlwZURpcmVjdCgpICE9IGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGUo
KSkKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlw
ZURpcmVjdCh2bSkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYg
KGdldERpcmVjdE9mZnNldCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpICE9
IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24g
MjIzNzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXNldFBy
b3RvdHlwZSh2bSwgZ2V0UHJvdG90eXBlRGlyZWN0KCkpOworICAgIHJlc2V0UHJvdG90eXBlKHZt
LCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsKIH0KIAogYm9vbCBKU0dsb2JhbE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0xMDk2LDExICsxMDk2
LDExIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNsZWFyR2xvYmFsU2NvcGVFeHQKICAgICBtX2ds
b2JhbFNjb3BlRXh0ZW5zaW9uLmNsZWFyKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNPYmplY3Qq
IGxhc3RJblByb3RvdHlwZUNoYWluKEpTT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgaW5saW5lIEpT
T2JqZWN0KiBsYXN0SW5Qcm90b3R5cGVDaGFpbihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgSlNPYmplY3QqIG8gPSBvYmplY3Q7Ci0gICAgd2hpbGUgKG8tPmdldFByb3RvdHlwZURp
cmVjdCgpLmlzT2JqZWN0KCkpCi0gICAgICAgIG8gPSBhc09iamVjdChvLT5nZXRQcm90b3R5cGVE
aXJlY3QoKSk7CisgICAgd2hpbGUgKG8tPmdldFByb3RvdHlwZURpcmVjdCh2bSkuaXNPYmplY3Qo
KSkKKyAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdldFByb3RvdHlwZURpcmVjdCh2bSkpOwogICAg
IHJldHVybiBvOwogfQogCkBAIC0xMTUwLDEzICsxMTUwLDE0IEBAIGlubGluZSB2b2lkIE9iamVj
dHNXaXRoQnJva2VuSW5kZXhpbmdGaW4KICAgICAvLyBWTS4gQnV0IHdlIGhhdmUgdG8gYmUgY2Fy
ZWZ1bCwgc2luY2UgdGhlcmUgbWF5IGJlIG9iamVjdHMgdGhhdCBjbGFpbSB0byBiZWxvbmcgdG8K
ICAgICAvLyBhIGRpZmZlcmVudCBnbG9iYWwgb2JqZWN0IHRoYXQgaGF2ZSBwcm90b3R5cGVzIGZy
b20gb3VyIGdsb2JhbCBvYmplY3QuCiAgICAgYm9vbCBmb3VuZEdsb2JhbE9iamVjdCA9IGZhbHNl
OworICAgIFZNJiB2bSA9IG1fZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGZvciAoSlNPYmplY3Qq
IGN1cnJlbnQgPSBvYmplY3Q7IDspIHsKICAgICAgICAgaWYgKGN1cnJlbnQtPmdsb2JhbE9iamVj
dCgpID09IG1fZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgICAgICBmb3VuZEdsb2JhbE9iamVjdCA9
IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1cnJlbnQtPmdldFByb3RvdHlwZURpcmVjdCgpOwor
ICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGN1cnJlbnQgPSBhc09iamVjdChwcm90b3R5cGVWYWx1ZSk7CkBA
IC0xMjI3LDcgKzEyMjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldFByb3RvdHlwZShW
TSYgCiB7CiAgICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBwcm90b3R5cGUpOwogCi0gICAgSlNP
YmplY3QqIG9sZExhc3RJblByb3RvdHlwZUNoYWluID0gbGFzdEluUHJvdG90eXBlQ2hhaW4odGhp
cyk7CisgICAgSlNPYmplY3QqIG9sZExhc3RJblByb3RvdHlwZUNoYWluID0gbGFzdEluUHJvdG90
eXBlQ2hhaW4odm0sIHRoaXMpOwogICAgIEpTT2JqZWN0KiBvYmplY3RQcm90b3R5cGUgPSBtX29i
amVjdFByb3RvdHlwZS5nZXQoKTsKICAgICBpZiAob2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gIT0g
b2JqZWN0UHJvdG90eXBlKQogICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJv
dG90eXBlRGlyZWN0KHZtLCBvYmplY3RQcm90b3R5cGUpOwpAQCAtMTUyNiw3ICsxNTI3LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIAogICAgIHN0cnVjdHVyZSgp
LT5zZXRHbG9iYWxPYmplY3Qodm0sIHRoaXMpOwogICAgIG1fcnVudGltZUZsYWdzID0gbV9nbG9i
YWxPYmplY3RNZXRob2RUYWJsZS0+amF2YVNjcmlwdFJ1bnRpbWVGbGFncyh0aGlzKTsKICAgICBp
bml0KHZtKTsKLSAgICBzZXRHbG9iYWxUaGlzKHZtLCBKU1Byb3h5OjpjcmVhdGUodm0sIEpTUHJv
eHk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZ2V0UHJvdG90eXBlRGlyZWN0KCksIFB1cmVG
b3J3YXJkaW5nUHJveHlUeXBlKSwgdGhpcykpOworICAgIHNldEdsb2JhbFRoaXModm0sIEpTUHJv
eHk6OmNyZWF0ZSh2bSwgSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBnZXRQcm90
b3R5cGVEaXJlY3Qodm0pLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSksIHRoaXMpKTsKIH0KIAog
dm9pZCBKU0dsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogdGhp
c1ZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwyMCArMzUsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNHbG9iYWxPYmplY3Q6Om9iamVjdFByb3RvdHlwZUlzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFo
YXNJbmRleGVkUHJvcGVydGllcyhtX29iamVjdFByb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0g
ICAgICAgICYmIG1fb2JqZWN0UHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKS5pc051bGwo
KTsKKyAgICAgICAgJiYgbV9vYmplY3RQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCh2bSgp
KS5pc051bGwoKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEpTR2xvYmFsT2JqZWN0OjphcnJh
eVByb3RvdHlwZUNoYWluSXNTYW5lKCkKIHsKICAgICByZXR1cm4gIWhhc0luZGV4ZWRQcm9wZXJ0
aWVzKG1fYXJyYXlQcm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAgICAgICAmJiBtX2FycmF5
UHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQo
KQorICAgICAgICAmJiBtX2FycmF5UHJvdG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0oKSkg
PT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkKICAgICAgICAgJiYgb2JqZWN0UHJvdG90eXBlSXNT
YW5lKCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3RyaW5nUHJv
dG90eXBlQ2hhaW5Jc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRpZXMo
bV9zdHJpbmdQcm90b3R5cGUtPmluZGV4aW5nVHlwZSgpKQotICAgICAgICAmJiBtX3N0cmluZ1By
b3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KCkgPT0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkK
KyAgICAgICAgJiYgbV9zdHJpbmdQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCh2bSgpKSA9
PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJc1Nh
bmUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6Z2V0
T3duUHJvcGVydAogICAgIC8vIFdlIGRvbid0IGNhbGwgdGhyb3VnaCB0byBKU09iamVjdCBiZWNh
dXNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGdpdmUgYSAKICAgICAvLyBsZXhpY2FsIGVudmlyb25tZW50
IG9iamVjdCBnZXR0ZXIgcHJvcGVydGllcyBvciBhIHByb3RvdHlwZS4KICAgICBBU1NFUlQoIXRo
aXNPYmplY3QtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7Ci0gICAgQVNTRVJUKHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQodGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KGV4ZWMtPnZtKCkpLmlzTnVsbCgpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5j
cHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIGJvb2wgSlNNYXA6Omlz
SXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb24KICAgICBpZiAoc3RydWN0dXJlID09IGdsb2JhbE9i
amVjdC0+bWFwU3RydWN0dXJlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGdl
dFByb3RvdHlwZURpcmVjdCgpICE9IGdsb2JhbE9iamVjdC0+bWFwUHJvdG90eXBlKCkpCisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmIChnZXRQcm90b3R5cGVEaXJlY3Qo
dm0pICE9IGdsb2JhbE9iamVjdC0+bWFwUHJvdG90eXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoZ2V0RGlyZWN0
T2Zmc2V0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgIT0gaW52YWxpZE9m
ZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3
ICs1MzEsNyBAQCBTdHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Qo
b2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3Qodm0pLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKICAgICBQcm9wZXJ0eU5hbWUgY29uc3RydWN0b3Iodm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IpOwogICAgIGlmIChvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBjb25zdHJ1
Y3Rvciwgc2xvdCkpIHsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkpOwpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0
aEN5Y2xlQ2hlYwogCiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4
ZWMsIE5vdFN0cmljdE1vZGUpID09IHRoaXMpOwogCi0gICAgaWYgKHRoaXMtPmdldFByb3RvdHlw
ZURpcmVjdCgpID09IHByb3RvdHlwZSkKKyAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSA9PSBwcm90b3R5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBpc0V4
dGVuc2libGUgPSB0aGlzLT5pc0V4dGVuc2libGUoZXhlYyk7CkBAIC0xNjkwLDcgKzE2OTAsNyBA
QCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE1MzQKICAgICAgICAgaWYg
KFVOTElLRUxZKGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT50eXBlKCkgPT0gUHJveHlPYmplY3RU
eXBlKSkKICAgICAgICAgICAgIGJyZWFrOyAvLyBXZSdyZSBkb25lLiBTZXQgdGhlIHByb3RvdHlw
ZS4KLSAgICAgICAgbmV4dFByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT5nZXRQ
cm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgbmV4dFByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQ
cm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgIH0KICAgICBzZXRQcm90b3R5
cGVEaXJlY3Qodm0sIHByb3RvdHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzAxLDkgKzE3
MDEsOSBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iCiAgICAgcmV0
dXJuIG9iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYy0+dm0oKSwgZXhlYywg
cHJvdG90eXBlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiB9CiAKLUpTVmFsdWUgSlNPYmplY3Q6
OmdldFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqKQorSlNWYWx1ZSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICByZXR1cm4gb2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6
OnNldFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUs
IGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCkBAIC0yNTM4LDYgKzI1MzgsNyBAQCB2b2lkIEpT
T2JqZWN0OjpkZWFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoCiAKIGJvb2wgSlNPYmplY3Q6OmF0dGVt
cHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhvbGVGb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsKICAgICAgICAgLy8gVGhpcyBo
YXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHByb3RvdHlwZXMgYXMgSlNPYmpl
Y3Q6OnB1dCgpLiBJdCBvbmx5CiAgICAgICAgIC8vIGFsbG93cyBhIHByb3RvdHlwZSB0byBpbnRl
cmNlcHQgYSBwdXQgaWYgKGEpIHRoZSBwcm90b3R5cGUgZGVjbGFyZXMgdGhlIHByb3BlcnR5CkBA
IC0yNTU5LDcgKzI1NjAsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRC
eUluCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1cnJlbnQtPmdldFByb3RvdHlwZURpcmVjdCgp
OworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBl
RGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZVZhbHVlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTI1NjksNyArMjU3MCw3IEBAIGJvb2wg
SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW4KIAogYm9vbCBKU09iamVjdDo6YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIGJvb2wmIHB1dFJlc3VsdCkKIHsK
LSAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAg
SlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGdldFByb3RvdHlwZURpcmVjdChleGVjLT52bSgpKTsK
ICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKQEAgLTM2ODAsNyArMzY4MSw3IEBAIGJvb2wgSlNPYmplY3Q6OmFueU9iamVjdEluQ2hh
aW5NYXlJbnRlcmMKICAgICAgICAgaWYgKGN1cnJlbnQtPnN0cnVjdHVyZSh2bSktPm1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGN1cnJlbnQtPmdldFByb3RvdHlwZURpcmVj
dCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGN1cnJlbnQtPmdldFByb3RvdHlwZURp
cmVjdCh2bSk7CiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMzY5NCw3ICszNjk1LDcgQEAgYm9vbCBKU09iamVj
dDo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcAogICAgICAgICByZXR1cm4gYW55T2JqZWN0SW5D
aGFpbk1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpOwogICAgIAogICAgIGZvciAoSlNPYmpl
Y3QqIGN1cnJlbnQgPSB0aGlzOyA7KSB7Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3Vy
cmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
Y3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5p
c051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDIyMzc0MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gSXQgaXMgdmFsaWQgdG8gdXNlIHRo
b3VnaCB3aGVuIHlvdSBrbm93IHRoYXQgeW91IHdhbnQgdG8gZGlyZWN0bHkgZ2V0IGl0CiAgICAg
Ly8gd2l0aG91dCBjb25zdWx0aW5nIHRoZSBtZXRob2QgdGFibGUuIFRoaXMgaXMgYWtpbiB0byBn
ZXR0aW5nIHRoZSBbW1Byb3RvdHlwZV1dCiAgICAgLy8gaW50ZXJuYWwgZmllbGQgZGlyZWN0bHkg
YXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgotICAgIEpTVmFsdWUgZ2V0UHJvdG90
eXBlRGlyZWN0KCkgY29uc3Q7CisgICAgSlNWYWx1ZSBnZXRQcm90b3R5cGVEaXJlY3QoVk0mKSBj
b25zdDsKIAogICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHdpdGhvdXQgY2hlY2tpbmcg
Zm9yIGN5Y2xlcyBhbmQgd2l0aG91dAogICAgIC8vIGRvaW5nIGR5bmFtaWMgZGlzcGF0Y2ggb24g
W1tTZXRQcm90b3R5cGVPZl1dIG9wZXJhdGlvbiBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KQEAgLTg3
Myw3ICs4NzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+aGFzUG9seVByb3RvKCkgfHwgZ2V0UHJvdG90eXBlRGlyZWN0
KCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKGdldFByb3RvdHlw
ZURpcmVjdCgpKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aGFzUG9seVByb3RvKCkg
fHwgZ2V0UHJvdG90eXBlRGlyZWN0KHZtKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09
IEhlYXA6OmhlYXAoZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSkpOwogICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmlzT2JqZWN0KCkpOwogICAgICAgICBBU1NFUlQoY2xhc3NJbmZvKHZtKSk7CiAg
ICAgfQpAQCAtMTMwMyw5ICsxMzAzLDkgQEAgaW5saW5lIEpTT2JqZWN0OjpKU09iamVjdChWTSYg
dm0sIFN0cnVjdAogewogfQogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0UHJvdG90eXBl
RGlyZWN0KCkgY29uc3QKK2lubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGVEaXJl
Y3QoVk0mIHZtKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90
eXBlKHRoaXMpOworICAgIHJldHVybiBzdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGUodGhp
cyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGUoVk0mIHZtLCBF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0xMzEzLDcgKzEzMTMsNyBAQCBpbmxpbmUgSlNWYWx1ZSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlKFZNCiAgICAgYXV0byBnZXRQcm90b3R5cGVNZXRob2QgPSBtZXRo
b2RUYWJsZSh2bSktPmdldFByb3RvdHlwZTsKICAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBl
RnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7
CiAgICAgaWYgKExJS0VMWShnZXRQcm90b3R5cGVNZXRob2QgPT0gZGVmYXVsdEdldFByb3RvdHlw
ZSkpCi0gICAgICAgIHJldHVybiBnZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgcmV0dXJu
IGdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgcmV0dXJuIGdldFByb3RvdHlwZU1ldGhvZCh0
aGlzLCBleGVjKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUYKICAgICAg
ICAgaWYgKG9iai0+c3RydWN0dXJlKHZtKS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3Bl
cnRpZXNFeGNsdWRpbmdQcm90bygpIHx8IG9iai0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5
cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBwcm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBw
cm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgIGlmIChwcm90
b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMTE2LDcgKzEx
Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICAgICAgaWYg
KExJS0VMWShzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQcm90b3R5cGUg
PT0gZGVmYXVsdEdldFByb3RvdHlwZSB8fCBzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpKQotICAgICAgICAgICAg
cHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgICAgIHBy
b3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CkBAIC0xNTAs
NyArMTUwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXROb25JbmRleAogICAg
ICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgICAgICBpZiAoTElLRUxZKHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9PSBkZWZhdWx0
R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCi0gICAgICAgICAgICBwcm90b3R5cGUg
PSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICAgICAgcHJvdG90eXBlID0g
b2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIEpTUHJveHk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsCiB2
b2lkIEpTUHJveHk6OnNldFRhcmdldChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgbV90YXJnZXQuc2V0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QpOwotICAgIHNl
dFByb3RvdHlwZURpcmVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7
CisgICAgc2V0UHJvdG90eXBlRGlyZWN0KHZtLCBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdCh2bSkpOwogfQogCiBTdHJpbmcgSlNQcm94eTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuY3BwCShy
ZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBib29sIEpTU2V0Ojppc0l0ZXJh
dG9yUHJvdG9jb2xGYXN0QW5kTm9uCiAgICAgaWYgKHN0cnVjdHVyZSA9PSBnbG9iYWxPYmplY3Qt
PnNldFN0cnVjdHVyZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChnZXRQcm90
b3R5cGVEaXJlY3QoKSAhPSBnbG9iYWxPYmplY3QtPmpzU2V0UHJvdG90eXBlKCkpCisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmIChnZXRQcm90b3R5cGVEaXJlY3Qodm0p
ICE9IGdsb2JhbE9iamVjdC0+anNTZXRQcm90b3R5cGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChnZXREaXJlY3RP
ZmZzZXQodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSAhPSBpbnZhbGlkT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIyMzc0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDEzICsxMDQsMTMgQEAgSlNPYmplY3QqIFByb2dyYW1F
eGVjdXRhYmxlOjppbml0aWFsaXplRwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBlcnJvci50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlKCkpOwogCi0g
ICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3QoKTsKKyAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSk7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlw
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJvdG90
eXBlKS0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkpIHsKICAgICAgICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGlzIG5vdCBhbGxvd2Vk
IGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiIpKTsKICAgICAgICAgfQotICAgICAgICBu
ZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVj
dCgpOworICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPmdl
dFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQogICAgIAogICAgIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDMsMTMgKzI0MywxNCBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmlzVmFsaWQoSlNH
bG9iYWxPCiAgICAgaWYgKCFjYWNoZWRQcm90b3R5cGVDaGFpbikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gcHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCwgYmFzZSk7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVjdHVyZSA9IGNhY2hlZFByb3RvdHlwZUNo
YWluLT5oZWFkKCk7CiAgICAgd2hpbGUgKCpjYWNoZWRTdHJ1Y3R1cmUgJiYgIXByb3RvdHlwZS5p
c051bGwoKSkgewotICAgICAgICBpZiAoYXNPYmplY3QocHJvdG90eXBlKS0+c3RydWN0dXJlKCkg
IT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKKyAgICAgICAgaWYgKGFzT2JqZWN0KHByb3RvdHlw
ZSktPnN0cnVjdHVyZSh2bSkgIT0gY2FjaGVkU3RydWN0dXJlLT5nZXQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgKytjYWNoZWRTdHJ1Y3R1cmU7Ci0gICAgICAgIHByb3Rv
dHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAg
ICBwcm90b3R5cGUgPSBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwogICAgIH0KICAgICByZXR1cm4gcHJvdG90eXBlLmlzTnVsbCgpICYmICEqY2FjaGVkU3RydWN0
dXJlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTctMTAtMTkg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgYWNj
ZXNzZXMgdG8gaG93IHdlIGdldCB0aGUgZGlyZWN0IHByb3RvdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjph
Y2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01XaW5kb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVB1dCk6Cisg
ICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3Rv
ckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlcjo6cHV0QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllczo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXRCeUluZGV4KToKKwogMjAxNy0xMC0xOSAgTXMyZ2VyICA8
TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHByb3ByaWV0YXJ5IGNvbnN0YW50
cyBmcm9tIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIy
Mzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgaXNWaXNp
YmxlTmFtZWRQcm9wZXJ0eShKU0M6OgogICAgIC8vICAgIDEuIElmIHByb3RvdHlwZSBpcyBub3Qg
YSBuYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCwgYW5kIHByb3RvdHlwZSBoYXMgYW4gb3duIHByb3Bl
cnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
Y2hlY2tpbmcgZm9yICduYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCcuCiAgICAgLy8gICAgMi4gU2V0
IHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0g
cHJvcGVydHkgb2YgcHJvdG90eXBlLgotICAgIGF1dG8gcHJvdG90eXBlID0gdGhpc09iamVjdC5n
ZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBhdXRvIHByb3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0
UHJvdG90eXBlRGlyZWN0KHN0YXRlLnZtKCkpOwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBKU0M6OmFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdCgmc3RhdGUsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTEyLDcgKzEx
Miw3IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEoKICAgICAvLyAg
ICAxLiBJZiBwcm90b3R5cGUgaXMgbm90IGEgbmFtZWQgcHJvcGVydGllcyBvYmplY3QsIGFuZCBw
cm90b3R5cGUgaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4K
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNoZWNraW5nIGZvciAnbmFtZWQgcHJvcGVydGllcyBv
YmplY3QnLgogICAgIC8vICAgIDIuIFNldCBwcm90b3R5cGUgdG8gYmUgdGhlIHZhbHVlIG9mIHRo
ZSBpbnRlcm5hbCBbW1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIHByb3RvdHlwZS4KLSAgICBhdXRv
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgYXV0byBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS52bSgpKTsKICAg
ICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgSlNDOjphc09iamVjdChwcm90b3R5cGUpLT5n
ZXRQcm9wZXJ0eVNsb3QoJnN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3
ICsyODIsNyBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OlZNJiB2bSwgCiAgICAg
ICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAgICAgaWYg
KGNsYXNzSW5mbyA9PSBKU0RPTVdpbmRvd1Byb3h5OjppbmZvKCkpCiAgICAgICAgICAgICByZXR1
cm4ganNDYXN0PEpTRE9NV2luZG93UHJveHkqPihvYmplY3QpLT53aW5kb3coKTsKLSAgICAgICAg
dmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICB2YWx1ZSA9IG9i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93UHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDcgKzg1LDcgQEAgYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcgogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAo
QmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1ZhbHVlIHByb3RvID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90byA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKHByb3RvLmlzT2Jq
ZWN0KCkgJiYganNDYXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9wZXJ0eShzdGF0ZSwgcHJv
cGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJ
KHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlCiBib29sIHBsdWdpbkVsZW1l
bnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNIVE1MRWxlbWVudCogZWxlbWVudCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgaWYgKCFlbGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS5pc05vcm1hbCgp
KSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQtPmdldFByb3RvdHlwZURp
cmVjdCgpOworICAgICAgICBKU0M6OkpTVmFsdWUgcHJvdG8gPSBlbGVtZW50LT5nZXRQcm90b3R5
cGVEaXJlY3QoZXhlYy0+dm0oKSk7CiAgICAgICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIEpT
Qzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShl
eGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICB9
CiAgICAgCiAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAgQVNTRVJUKGFzT2JqZWN0
KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKSktPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICBBU1NFUlQoYXNP
YmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92
bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKICAg
ICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+
KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+
c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlz
aW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC05NTQsNyArOTU0LDcgQEAgc3ViIEdlbmVyYXRl
UHV0CiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVHZW5lcmF0b3ItPkluaGVy
aXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRlQnVpbHRpbnMiKTsKICAg
ICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHN0YXRlLT52bSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7XG4i
KTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAgIjsKICAgICAgICAgfQpA
QCAtMTAyMyw3ICsxMDIzLDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogICAgICAgICBteSAk
YWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVycmlkZUJ1aWx0aW5zKSB7
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVudCAuPSAiICAgICI7CiAg
ICAgICAgIH0KQEAgLTcxMTQsNyArNzExNCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcwogICAgICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIHdhcyBkZWNsYXJlZCB3
aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZS4KICAgICAjIGh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0
CiAgICAgaWYgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgkaW50ZXJmYWNlKSkgewot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgIH0g
ZWxzaWYgKCRpbnRlcmZhY2UtPmlzQ2FsbGJhY2spIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgfSBlbHNlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb24KIAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9i
amVjdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90
eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEdsb2JhbE9iamVjdCIp
KSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAkocmV2
aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICgh
KHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsK
QEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGlu
ZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAo
IShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0
eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9v
bCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgaWYgKCFwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsK
KyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBh
c09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwg
c2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkocmV2aXNpb24g
MjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW4KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJv
dG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAt
MjUyLDcgKzI1Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW4K
IAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgp
OwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhp
c09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIy
Mzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcs
NyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoCiAKICAgICBpZiAo
IXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9
OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVy
dHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIwNyw3ICsyMDcsNyBA
QCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRCCiAKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjIzNzQz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3
LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgaWYg
KCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7
IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkg
fTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVE
aXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yMDcsNyArMjA3LDcg
QEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uOgogCiAgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVy
dHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQ
cm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAgIGlmICghcHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYg
YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5x
dWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5
cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1l
LCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBi
b29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgp
OworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURp
cmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1l
LCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBib29s
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlw
ZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAkocmV2
aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUg
PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBp
ZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9w
ZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAg
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1
ZSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyQQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRl
LCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAg
aWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJv
cGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQ
cm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGlmICghcHJvcGVydHlOYW1l
LmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0
YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShz
dGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
SWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsg
dGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9
OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90
KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0
ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCB2YWx1ZSk7Cg==
</data>
<flag name="review"
          id="343988"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324365</attachid>
            <date>2017-10-20 00:10:17 -0700</date>
            <delta_ts>2017-10-20 00:50:13 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>48427</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDE3LTEwLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IE9wdGltaXplIGFjY2Vzc2VzIHRvIGhvdyB3ZSBnZXQgdGhlIGRpcmVjdCBwcm90b3R5cGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODU0OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyBKU09iamVjdDo6Z2V0UHJvdG90eXBlRGlyZWN0IHRha2UgVk0mIGFzIGEgcGFyYW1ldGVy
CisgICAgICAgIHNvIGl0IGNhbiB1c2UgdGhlIGZhc3RlciB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1
cmUgYWNjZXNzb3IgZnVuY3Rpb24uCisgICAgICAgIFRoZSByZWFzb24gZm9yIG1ha2luZyB0aGlz
IGNoYW5nZSBpcyB0aGF0IEpTT2JqZXQ6OmdldFByb3RvdHlwZURpcmVjdAorICAgICAgICBpcyBj
YWxsZWQgb24gdGhlIGhvdCBwYXRoIGluIHByb3BlcnR5IGxvb2t1cC4KKworICAgICAgICAqIEFQ
SS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdEdldFByb3RvdHlwZSk6CisgICAg
ICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0OjpE
T01KSVRBdHRyaWJ1dGU6OnNsb3dDYWxsKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQmFz
ZUpTT2JqZWN0OjpjdXN0b21HZXR0ZXIpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVQcm94eSk6
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNw
ZWNpZXNXYXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6Omlz
SXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQp
OgorICAgICAgICAoSlNDOjpsYXN0SW5Qcm90b3R5cGVDaGFpbik6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpyZXNldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9iamVjdFByb3RvdHlwZUlz
U2FuZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheVByb3RvdHlwZUNoYWlu
SXNTYW5lKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN0cmluZ1Byb3RvdHlwZUNo
YWluSXNTYW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgICogcnVudGltZS9KU01hcC5jcHA6CisgICAgICAgIChKU0M6OkpTTWFwOjppc0l0
ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1l
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW5kZXhPbkhv
bGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YW55T2JqZWN0SW5DaGFpbk1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpwcm90b3R5
cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldFByb3RvdHlwZURpcmVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXRQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm94eS5jcHA6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnNldFRhcmdldCk6CisgICAgICAgICog
cnVudGltZS9KU1NldC5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0Ojppc0l0ZXJhdG9yUHJvdG9j
b2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSk6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xv
YmFsUHJvcGVydGllcyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNWYWxpZCBjb25zdCk6CisKIDIwMTctMTAtMTkgIEpG
IEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBu
byBWTSAvIEpTIHZlcnNpb24gb2YgZXZlcnl0aGluZyBidXQgSW5zdGFuY2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDcgKzk5Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SlNPYmplY3QqPihwb2ludGVyKTsKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTUdldHRlclNuaXBw
ZXQ+IGNhbGxET01HZXR0ZXIoKQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGhpc09iamVjdCk7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSkp
OwogICAgIH0KIH07CiAKQEAgLTIyMTEsNyArMjIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmUKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTT2JqZWN0KiBq
c1RhcmdldCA9IGFzT2JqZWN0KHRhcmdldC5hc0NlbGwoKSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwganNUYXJnZXQtPmdldFByb3RvdHlwZURpcmVjdCgpLCBJbXB1cmVQcm94eVR5cGUp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzVGFyZ2V0LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pLCBJbXB1cmVQcm94eVR5cGUpOwogICAgIEpTUHJveHkqIHByb3h5ID0gSlNQcm94eTo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGpzVGFyZ2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHByb3h5KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTVmFsdWVS
ZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXgKICAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOyAKLSAgICBy
ZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpKTsKKyAgICBy
ZXR1cm4gdG9SZWYoZXhlYywganNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChleGVjLT52bSgp
KSk7CiB9CiAKIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmIGN0eCwgSlNP
YmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjIzNzQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIHNwZWNp
ZXNXYXRjaHBvaW50SXNWYQogICAgIH0KIAogICAgIHJldHVybiAhdGhpc09iamVjdC0+aGFzQ3Vz
dG9tUHJvcGVydGllcygpCi0gICAgICAgICYmIGFycmF5UHJvdG90eXBlID09IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCgpCisgICAgICAgICYmIGFycmF5UHJvdG90eXBlID09IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdChnbG9iYWxPYmplY3QtPnZtKCkpCiAgICAgICAgICYm
IGdsb2JhbE9iamVjdC0+YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpLnN0YXRlT25KU1RocmVhZCgp
ID09IElzV2F0Y2hlZDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjIsNyArMTYyLDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKAog
ICAgICAgICAgICAgbmFtZVZhbHVlID0gbmFtZVNsb3QuZ2V0VmFsdWUoZXhlYywgbmFtZVByb3Bl
cnROYW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRP
YmogPSBvYmotPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBjdXJyZW50T2JqID0gb2Jq
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgIH0KICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTIsMTAgKzEyOTIsMTAgQEAgYm9vbCBKU0Fy
cmF5Ojppc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTgogICAgIGlmIChzdHJ1Y3R1cmUtPm1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoZ2V0UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgp
KQorICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBpZiAoZ2V0UHJvdG90eXBl
RGlyZWN0KHZtKSAhPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAo
Z2V0RGlyZWN0T2Zmc2V0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgIT0g
aW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAy
MjM3NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc2V0UHJv
dG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJlY3QoKSk7CisgICAgcmVzZXRQcm90b3R5cGUodm0s
IGdldFByb3RvdHlwZURpcmVjdCh2bSkpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTEwOTYsMTEgKzEwOTYs
MTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJHbG9iYWxTY29wZUV4dAogICAgIG1fZ2xv
YmFsU2NvcGVFeHRlbnNpb24uY2xlYXIoKTsKIH0KIAotc3RhdGljIGlubGluZSBKU09iamVjdCog
bGFzdEluUHJvdG90eXBlQ2hhaW4oSlNPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNP
YmplY3QqIGxhc3RJblByb3RvdHlwZUNoYWluKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsK
ICAgICBKU09iamVjdCogbyA9IG9iamVjdDsKLSAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBlRGly
ZWN0KCkuaXNPYmplY3QoKSkKLSAgICAgICAgbyA9IGFzT2JqZWN0KG8tPmdldFByb3RvdHlwZURp
cmVjdCgpKTsKKyAgICB3aGlsZSAoby0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKS5pc09iamVjdCgp
KQorICAgICAgICBvID0gYXNPYmplY3Qoby0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7CiAgICAg
cmV0dXJuIG87CiB9CiAKQEAgLTExNTAsMTMgKzExNTAsMTQgQEAgaW5saW5lIHZvaWQgT2JqZWN0
c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgIC8vIFZNLiBCdXQgd2UgaGF2ZSB0byBiZSBjYXJl
ZnVsLCBzaW5jZSB0aGVyZSBtYXkgYmUgb2JqZWN0cyB0aGF0IGNsYWltIHRvIGJlbG9uZyB0bwog
ICAgIC8vIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QgdGhhdCBoYXZlIHByb3RvdHlwZXMgZnJv
bSBvdXIgZ2xvYmFsIG9iamVjdC4KICAgICBib29sIGZvdW5kR2xvYmFsT2JqZWN0ID0gZmFsc2U7
CisgICAgVk0mIHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgZm9yIChKU09iamVjdCog
Y3VycmVudCA9IG9iamVjdDsgOykgewogICAgICAgICBpZiAoY3VycmVudC0+Z2xvYmFsT2JqZWN0
KCkgPT0gbV9nbG9iYWxPYmplY3QpIHsKICAgICAgICAgICAgIGZvdW5kR2xvYmFsT2JqZWN0ID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7Cisg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVEaXJl
Y3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY3VycmVudCA9IGFzT2JqZWN0KHByb3RvdHlwZVZhbHVlKTsKQEAg
LTEyMjcsNyArMTIyOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKFZN
JiAKIHsKICAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIHByb3RvdHlwZSk7CiAKLSAgICBKU09i
amVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5cGVDaGFpbih0aGlz
KTsKKyAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5
cGVDaGFpbih2bSwgdGhpcyk7CiAgICAgSlNPYmplY3QqIG9iamVjdFByb3RvdHlwZSA9IG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbiAhPSBv
YmplY3RQcm90b3R5cGUpCiAgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNoYWluLT5zZXRQcm90
b3R5cGVEaXJlY3Qodm0sIG9iamVjdFByb3RvdHlwZSk7CkBAIC0xNTI2LDcgKzE1MjcsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgCiAgICAgc3RydWN0dXJlKCkt
PnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7CiAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZsYWdzKHRoaXMpOwogICAgIGlu
aXQodm0pOwotICAgIHNldEdsb2JhbFRoaXModm0sIEpTUHJveHk6OmNyZWF0ZSh2bSwgSlNQcm94
eTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBnZXRQcm90b3R5cGVEaXJlY3QoKSwgUHVyZUZv
cndhcmRpbmdQcm94eVR5cGUpLCB0aGlzKSk7CisgICAgc2V0R2xvYmFsVGhpcyh2bSwgSlNQcm94
eTo6Y3JlYXRlKHZtLCBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGdldFByb3Rv
dHlwZURpcmVjdCh2bSksIFB1cmVGb3J3YXJkaW5nUHJveHlUeXBlKSwgdGhpcykpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTT2JqZWN0KiB0aGlz
VmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgYm9vbCBK
U0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG90eXBlSXNTYW5lKCkKIHsKICAgICByZXR1cm4gIWhh
c0luZGV4ZWRQcm9wZXJ0aWVzKG1fb2JqZWN0UHJvdG90eXBlLT5pbmRleGluZ1R5cGUoKSkKLSAg
ICAgICAgJiYgbV9vYmplY3RQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpLmlzTnVsbCgp
OworICAgICAgICAmJiBtX29iamVjdFByb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKCkp
LmlzTnVsbCgpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmFycmF5
UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKQogewogICAgIHJldHVybiAhaGFzSW5kZXhlZFByb3BlcnRp
ZXMobV9hcnJheVByb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYmIG1fYXJyYXlQ
cm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCgpID09IG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
CisgICAgICAgICYmIG1fYXJyYXlQcm90b3R5cGUtPmdldFByb3RvdHlwZURpcmVjdCh2bSgpKSA9
PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQogICAgICAgICAmJiBvYmplY3RQcm90b3R5cGVJc1Nh
bmUoKTsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEpTR2xvYmFsT2JqZWN0OjpzdHJpbmdQcm90
b3R5cGVDaGFpbklzU2FuZSgpCiB7CiAgICAgcmV0dXJuICFoYXNJbmRleGVkUHJvcGVydGllcyht
X3N0cmluZ1Byb3RvdHlwZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgICYmIG1fc3RyaW5nUHJv
dG90eXBlLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9PSBtX29iamVjdFByb3RvdHlwZS5nZXQoKQor
ICAgICAgICAmJiBtX3N0cmluZ1Byb3RvdHlwZS0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKCkpID09
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpCiAgICAgICAgICYmIG9iamVjdFByb3RvdHlwZUlzU2Fu
ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIEpTTGV4aWNhbEVudmlyb25tZW50OjpnZXRP
d25Qcm9wZXJ0CiAgICAgLy8gV2UgZG9uJ3QgY2FsbCB0aHJvdWdoIHRvIEpTT2JqZWN0IGJlY2F1
c2UgdGhlcmUncyBubyB3YXkgdG8gZ2l2ZSBhIAogICAgIC8vIGxleGljYWwgZW52aXJvbm1lbnQg
b2JqZWN0IGdldHRlciBwcm9wZXJ0aWVzIG9yIGEgcHJvdG90eXBlLgogICAgIEFTU0VSVCghdGhp
c09iamVjdC0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKLSAgICBBU1NFUlQodGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCkuaXNOdWxsKCkpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSkuaXNOdWxsKCkpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmNw
cAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgYm9vbCBKU01hcDo6aXNJ
dGVyYXRvclByb3RvY29sRmFzdEFuZE5vbgogICAgIGlmIChzdHJ1Y3R1cmUgPT0gZ2xvYmFsT2Jq
ZWN0LT5tYXBTdHJ1Y3R1cmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZ2V0
UHJvdG90eXBlRGlyZWN0KCkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2
bSkgIT0gZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChnZXREaXJlY3RP
ZmZzZXQodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSAhPSBpbnZhbGlkT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcg
KzUzMSw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShKU08KICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVp
cnkpOwogICAgIFByb3BlcnR5TmFtZSBjb25zdHJ1Y3Rvcih2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3Rvcik7CiAgICAgaWYgKG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGNvbnN0cnVj
dG9yLCBzbG90KSkgewogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24o
KSk7CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjCiAKICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZXhl
YywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CiAKLSAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBl
RGlyZWN0KCkgPT0gcHJvdG90eXBlKQorICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qo
dm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIGlzRXh0
ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKQEAgLTE2OTAsNyArMTY5MCw3IEBA
IGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTUzNAogICAgICAgICBpZiAo
VU5MSUtFTFkoYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5
cGUpKQogICAgICAgICAgICAgYnJlYWs7IC8vIFdlJ3JlIGRvbmUuIFNldCB0aGUgcHJvdG90eXBl
LgotICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPmdldFBy
b3RvdHlwZURpcmVjdCgpOworICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFBy
b3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQogICAgIHNldFByb3RvdHlw
ZURpcmVjdCh2bSwgcHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MDEsOSArMTcw
MSw5IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCogb2IKICAgICByZXR1
cm4gb2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBleGVjLCBw
cm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAotSlNWYWx1ZSBKU09iamVjdDo6
Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSopCitKU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHJldHVybiBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIHJldHVybiBvYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdChleGVjLT52bSgpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6
c2V0UHJvdG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwg
Ym9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKQEAgLTI1MzgsNiArMjUzOCw3IEBAIHZvaWQgSlNP
YmplY3Q6OmRlYWxsb2NhdGVTcGFyc2VJbmRleE1hcCgKIAogYm9vbCBKU09iamVjdDo6YXR0ZW1w
dFRvSW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZUZvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93LCBib29sJiBwdXRSZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAgICAvLyBUaGlzIGhh
cyB0aGUgc2FtZSBiZWhhdmlvciB3aXRoIHJlc3BlY3QgdG8gcHJvdG90eXBlcyBhcyBKU09iamVj
dDo6cHV0KCkuIEl0IG9ubHkKICAgICAgICAgLy8gYWxsb3dzIGEgcHJvdG90eXBlIHRvIGludGVy
Y2VwdCBhIHB1dCBpZiAoYSkgdGhlIHByb3RvdHlwZSBkZWNsYXJlcyB0aGUgcHJvcGVydHkKQEAg
LTI1NTksNyArMjU2MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5
SW4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7
CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJyZW50LT5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMjU2OSw3ICsyNTcwLDcgQEAgYm9vbCBK
U09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogCiBib29sIEpTT2JqZWN0OjphdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdywgYm9vbCYgcHV0UmVzdWx0KQogewot
ICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBnZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBK
U1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gZ2V0UHJvdG90eXBlRGlyZWN0KGV4ZWMtPnZtKCkpOwog
ICAgIGlmIChwcm90b3R5cGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIApAQCAtMzY4MCw3ICszNjgxLDcgQEAgYm9vbCBKU09iamVjdDo6YW55T2JqZWN0SW5DaGFp
bk1heUludGVyYwogICAgICAgICBpZiAoY3VycmVudC0+c3RydWN0dXJlKHZtKS0+bWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0
KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0zNjk0LDcgKzM2OTUsNyBAQCBib29sIEpTT2JqZWN0
Ojpwcm90b3R5cGVDaGFpbk1heUludGVyY2VwCiAgICAgICAgIHJldHVybiBhbnlPYmplY3RJbkNo
YWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCk7CiAgICAgCiAgICAgZm9yIChKU09iamVj
dCogY3VycmVudCA9IHRoaXM7IDspIHsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBjdXJy
ZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBj
dXJyZW50LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBpZiAocHJvdG90eXBlLmlz
TnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjIzNzQzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBJdCBpcyB2YWxpZCB0byB1c2UgdGhv
dWdoIHdoZW4geW91IGtub3cgdGhhdCB5b3Ugd2FudCB0byBkaXJlY3RseSBnZXQgaXQKICAgICAv
LyB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIG1ldGhvZCB0YWJsZS4gVGhpcyBpcyBha2luIHRvIGdl
dHRpbmcgdGhlIFtbUHJvdG90eXBlXV0KICAgICAvLyBpbnRlcm5hbCBmaWVsZCBkaXJlY3RseSBh
cyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgSlNWYWx1ZSBnZXRQcm90b3R5
cGVEaXJlY3QoKSBjb25zdDsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZURpcmVjdChWTSYpIGNv
bnN0OwogCiAgICAgLy8gVGhpcyBzZXRzIHRoZSBwcm90b3R5cGUgd2l0aG91dCBjaGVja2luZyBm
b3IgY3ljbGVzIGFuZCB3aXRob3V0CiAgICAgLy8gZG9pbmcgZHluYW1pYyBkaXNwYXRjaCBvbiBb
W1NldFByb3RvdHlwZU9mXV0gb3BlcmF0aW9uIGluIHRoZSBzcGVjaWZpY2F0aW9uLgpAQCAtODcz
LDcgKzg3Myw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8fCBnZXRQcm90b3R5cGVEaXJlY3Qo
KS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAoZ2V0UHJvdG90eXBl
RGlyZWN0KCkpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5oYXNQb2x5UHJvdG8oKSB8
fCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pLmlzTnVsbCgpIHx8IEhlYXA6OmhlYXAodGhpcykgPT0g
SGVhcDo6aGVhcChnZXRQcm90b3R5cGVEaXJlY3Qodm0pKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8odm0pKTsKICAg
ICB9CkBAIC0xMzAzLDkgKzEzMDMsOSBAQCBpbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0KFZNJiB2
bSwgU3RydWN0CiB7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRQcm90b3R5cGVE
aXJlY3QoKSBjb25zdAoraW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZURpcmVj
dChWTSYgdm0pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5
cGUodGhpcyk7CisgICAgcmV0dXJuIHN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZSh0aGlz
KTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldFByb3RvdHlwZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYykKQEAgLTEzMTMsNyArMTMxMyw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2Jq
ZWN0OjpnZXRQcm90b3R5cGUoVk0KICAgICBhdXRvIGdldFByb3RvdHlwZU1ldGhvZCA9IG1ldGhv
ZFRhYmxlKHZtKS0+Z2V0UHJvdG90eXBlOwogICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVG
dW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsK
ICAgICBpZiAoTElLRUxZKGdldFByb3RvdHlwZU1ldGhvZCA9PSBkZWZhdWx0R2V0UHJvdG90eXBl
KSkKLSAgICAgICAgcmV0dXJuIGdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICByZXR1cm4g
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICByZXR1cm4gZ2V0UHJvdG90eXBlTWV0aG9kKHRo
aXMsIGV4ZWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcg
KzczLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogICAgICAg
ICBpZiAob2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVy
dGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgb2JqLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3RvdHlw
ZSAhPSBkZWZhdWx0R2V0UHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIHBy
b3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3Rv
dHlwZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMTYsNyArMTE2
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgICAgICBpZiAo
TElLRUxZKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZSA9
PSBkZWZhdWx0R2V0UHJvdG90eXBlIHx8IHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSkpCi0gICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICAgICAgcHJv
dG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE5vbkluZGV4CiAgICAg
ICAgIH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgICAgIGlmIChMSUtFTFkoc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlID09IGRlZmF1bHRH
ZXRQcm90b3R5cGUgfHwgc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KSkKLSAgICAgICAgICAgIHByb3RvdHlwZSA9
IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgICAgICBwcm90b3R5cGUgPSBv
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHZvaWQgSlNQcm94eTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwKIHZv
aWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKICAgICBtX3RhcmdldC5zZXQodm0sIHRoaXMsIGdsb2JhbE9iamVjdCk7Ci0gICAgc2V0
UHJvdG90eXBlRGlyZWN0KHZtLCBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpKTsK
KyAgICBzZXRQcm90b3R5cGVEaXJlY3Qodm0sIGdsb2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGly
ZWN0KHZtKSk7CiB9CiAKIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3Qq
IG9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAJKHJl
dmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIGJvb2wgSlNTZXQ6OmlzSXRlcmF0
b3JQcm90b2NvbEZhc3RBbmROb24KICAgICBpZiAoc3RydWN0dXJlID09IGdsb2JhbE9iamVjdC0+
c2V0U3RydWN0dXJlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGdldFByb3Rv
dHlwZURpcmVjdCgpICE9IGdsb2JhbE9iamVjdC0+anNTZXRQcm90b3R5cGUoKSkKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgaWYgKGdldFByb3RvdHlwZURpcmVjdCh2bSkg
IT0gZ2xvYmFsT2JqZWN0LT5qc1NldFByb3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGdldERpcmVjdE9m
ZnNldCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpICE9IGludmFsaWRPZmZz
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjIzNzQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2UoKSk7CiAKLSAg
ICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVj
dCgpOworICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZSA9IGdsb2JhbE9iamVjdC0+Z2V0UHJvdG90
eXBlRGlyZWN0KHZtKTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBl
LmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0KG5leHRQcm90b3R5
cGUpLT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSkgewogICAgICAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgICAgICAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaXMgbm90IGFsbG93ZWQg
aW4gdGhlIGdsb2JhbCBwcm90b3R5cGUgY2hhaW4uIikpOwogICAgICAgICB9Ci0gICAgICAgIG5l
eHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0
KCk7CisgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlKS0+Z2V0
UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0MywxMyArMjQzLDE0IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6aXNWYWxpZChKU0ds
b2JhbE8KICAgICBpZiAoIWNhY2hlZFByb3RvdHlwZUNoYWluKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBiYXNlKTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gY2FjaGVkUHJvdG90eXBlQ2hh
aW4tPmhlYWQoKTsKICAgICB3aGlsZSAoKmNhY2hlZFN0cnVjdHVyZSAmJiAhcHJvdG90eXBlLmlz
TnVsbCgpKSB7Ci0gICAgICAgIGlmIChhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSAh
PSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQorICAgICAgICBpZiAoYXNPYmplY3QocHJvdG90eXBl
KS0+c3RydWN0dXJlKHZtKSAhPSBjYWNoZWRTdHJ1Y3R1cmUtPmdldCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICArK2NhY2hlZFN0cnVjdHVyZTsKLSAgICAgICAgcHJvdG90
eXBlID0gYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAg
IHByb3RvdHlwZSA9IGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7
CiAgICAgfQogICAgIHJldHVybiBwcm90b3R5cGUuaXNOdWxsKCkgJiYgISpjYWNoZWRTdHJ1Y3R1
cmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAorMjAxNy0xMC0xOSAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBhY2Nl
c3NlcyB0byBob3cgd2UgZ2V0IHRoZSBkaXJlY3QgcHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg1NDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogbm8gZnVuY3Rpb25h
bGl0eSBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0
aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjphY2Nlc3NWaXNpYmxlTmFtZWRQcm9wZXJ0eSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNET01X
aW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1Byb3BlcnRpZXM6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0ZVB1dEJ5SW5kZXgpOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0QnlJbmRleCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXRCeUluZGV4KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI6OnB1
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0
QnlJbmRleCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyOjpw
dXRCeUluZGV4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlcjo6cHV0QnlJbmRleCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXI6OnB1dEJ5SW5kZXgpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhVbmZvcmdhYmxlUHJvcGVydGllczo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzOjpwdXRCeUluZGV4KToKKwogMjAxNy0x
MC0xOSAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHByb3By
aWV0YXJ5IGNvbnN0YW50cyBmcm9tIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgc3Rh
dGljIGJvb2wgaXNWaXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OgogICAgIC8vICAgIDEuIElmIHBy
b3RvdHlwZSBpcyBub3QgYSBuYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCwgYW5kIHByb3RvdHlwZSBo
YXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgY2hlY2tpbmcgZm9yICduYW1lZCBwcm9wZXJ0aWVzIG9iamVjdCcuCiAg
ICAgLy8gICAgMi4gU2V0IHByb3RvdHlwZSB0byBiZSB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFs
IFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgcHJvdG90eXBlLgotICAgIGF1dG8gcHJvdG90eXBl
ID0gdGhpc09iamVjdC5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBhdXRvIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLnZtKCkpOwogICAgIGlmIChwcm90
b3R5cGUuaXNPYmplY3QoKSAmJiBKU0M6OmFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5
U2xvdCgmc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3Bl
cnR5KEoKICAgICAvLyAgICAxLiBJZiBwcm90b3R5cGUgaXMgbm90IGEgbmFtZWQgcHJvcGVydGll
cyBvYmplY3QsIGFuZCBwcm90b3R5cGUgaGFzIGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVu
IHJldHVybiBmYWxzZS4KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNoZWNraW5nIGZvciAnbmFt
ZWQgcHJvcGVydGllcyBvYmplY3QnLgogICAgIC8vICAgIDIuIFNldCBwcm90b3R5cGUgdG8gYmUg
dGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBbW1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIHByb3Rv
dHlwZS4KLSAgICBhdXRvIHByb3RvdHlwZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0
KCk7CisgICAgYXV0byBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdChz
dGF0ZS52bSgpKTsKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgSlNDOjphc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QoJnN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6
OlZNJiB2bSwgCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0
KTsKICAgICAgICAgaWYgKGNsYXNzSW5mbyA9PSBKU0RPTVdpbmRvd1Byb3h5OjppbmZvKCkpCiAg
ICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93UHJveHkqPihvYmplY3QpLT53aW5k
b3coKTsKLSAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAg
ICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICB9CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1Byb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBKU0RPTVdpbmRvd1Byb3BlcnRpZXM6Omdl
dE93blByb3BlcgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBpZiAoQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1ZhbHVl
IHByb3RvID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBw
cm90byA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAg
aWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganNDYXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9w
ZXJ0eShzdGF0ZSwgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw3ICsxMTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlCiBi
b29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QoSlNIVE1MRWxlbWVudCog
ZWxlbWVudCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29y
bGQoKS5pc05vcm1hbCgpKSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBwcm90byA9IGVsZW1lbnQt
PmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU0M6OkpTVmFsdWUgcHJvdG8gPSBlbGVt
ZW50LT5nZXRQcm90b3R5cGVEaXJlY3QoZXhlYy0+dm0oKSk7CiAgICAgICAgIGlmIChwcm90by5p
c09iamVjdCgpICYmIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChwcm90bykp
LT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjM3NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCgKICAgICB9CiAgICAgCiAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7Ci0gICAg
QVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVE
aXJlY3QoKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsK
KyAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3Rv
dHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlcik7CiAKICAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC05NTQsNyArOTU0LDcg
QEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgICAgIG15ICRvdmVycmlkZUJ1aWx0aW5zID0gJGNvZGVH
ZW5lcmF0b3ItPkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIk92ZXJyaWRl
QnVpbHRpbnMiKTsKICAgICAgICAgaWYgKCEkb3ZlcnJpZGVCdWlsdGlucykgewogICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTtcbiIp
OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpKSB7XG4iKTsKICAgICAgICAgICAgICRhZGRpdGlvbmFsSW5kZW50IC49ICIgICAg
IjsKICAgICAgICAgfQpAQCAtMTAyMyw3ICsxMDIzLDcgQEAgc3ViIEdlbmVyYXRlUHV0QnlJbmRl
eAogICAgICAgICBteSAkYWRkaXRpb25hbEluZGVudCA9ICIiOwogICAgICAgICBpZiAoISRvdmVy
cmlkZUJ1aWx0aW5zKSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUHJv
cGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6Vk1JbnF1aXJ5IH07XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEocHJvdG90eXBlLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKSkge1xuIik7CiAgICAgICAgICAgICAkYWRkaXRpb25hbEluZGVu
dCAuPSAiICAgICI7CiAgICAgICAgIH0KQEAgLTcxMTQsNyArNzExNCw3IEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgICMgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNl
IHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJp
YnV0ZS4KICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1w
cm90b3R5cGUtb2JqZWN0CiAgICAgaWYgKFNob3VsZFVzZUdsb2JhbE9iamVjdFByb3RvdHlwZSgk
aW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5
cGVEaXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURp
cmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTtcbiIpOwogICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmlzQ2FsbGJhY2spIHsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmplY3QpO1xuIik7
CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lv
biAyMjM3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb24KIAogdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVE
aXJlY3QoKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxP
YmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVz
dEdsb2JhbE9iamVjdCIpKSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7
CiAgICAgICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlw
ZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkp
OwogICAgICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHZhbHVlKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6
OmZyb20oc3RhdGUsIGluZGV4KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52
bSgpKTsKICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5
cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwog
ICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwg
dmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCShyZXZpc2lvbiAyMjM3NDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUs
NyArMjE1LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAg
ICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90
b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUu
aXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUs
IHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNDMsNyAr
MjQzLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZwogCiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW4KIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsK
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAg
ICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+
Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAg
ICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0
ZSwgdmFsdWUpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW4KIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1
ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkp
OwogICAgIGlmICghKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSkt
PmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAg
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5j
cHAJKHJldmlzaW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4Nyw3ICsxODcsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpw
dXQoCiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNP
YmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHBy
b3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dChzdGF0ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAg
LTIwNyw3ICsyMDcsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXRC
CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4
KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRo
aXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAko
cmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODcsNyArMTg3LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uOgogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkgewogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlz
T2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgICAgICBpZiAoIShw
cm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNs
b3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkBA
IC0yMDcsNyArMjA3LDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OgogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpbmRl
eCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgaWYgKCEo
cHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlT
bG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTsKICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldp
dGhJZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAJKHJldmlz
aW9uIDIyMzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkz
LDcgKzE5Myw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAog
ICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QgeyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+
Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBl
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjEzLDcg
KzIxMyw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHUKIAogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAg
IFByb3BlcnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2Jq
ZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCShyZXZpc2lv
biAyMjM3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
Niw3ICsyMTYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAK
ICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSB9OwotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFBy
b3RvdHlwZURpcmVjdCgpOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3Qt
PmdldFByb3RvdHlwZURpcmVjdChzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGlmICghKHByb3RvdHlw
ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0
ZSwgcHJvcGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHZhbHVlKTsKQEAgLTIzNiw3
ICsyMzYsNyBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6CiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGluZGV4KTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmpl
Y3QtPmdldFByb3RvdHlwZURpcmVjdCgpOworICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICBpZiAoIShwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3Rh
dGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwogICAgICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQQogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCB7IHRoaXNPYmplY3QsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkgfTsKLSAgICAgICAgSlNWYWx1ZSBw
cm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZt
KCkpOwogICAgICAgICBpZiAoIShwcm90b3R5cGUuaXNPYmplY3QoKSAmJiBhc09iamVjdChwcm90
b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3Qoc3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpKSB7CiAg
ICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52
bSgpKTsKICAgICAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKHN0YXRlLCBpbmRleCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QgeyB0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5IH07Ci0gICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKKyAg
ICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdChzdGF0
ZS0+dm0oKSk7CiAgICAgaWYgKCEocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QocHJv
dG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSkgewog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgp
KTsKICAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3Rh
dGUsIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjIzNzQzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGlm
ICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qg
eyB0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
IH07Ci0gICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJvdG90eXBl
RGlyZWN0KCk7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHN0YXRlLT52bSgpKTsKICAgICAgICAgaWYgKCEocHJvdG90eXBlLmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KHN0YXRlLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKSkgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjMxLDcgKzIzMSw3
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3AKIAogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaW5kZXgpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90IHsgdGhpc09iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSB9OwotICAgIEpTVmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+Z2V0
UHJvdG90eXBlRGlyZWN0KCk7CisgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LT5n
ZXRQcm90b3R5cGVEaXJlY3Qoc3RhdGUtPnZtKCkpOwogICAgIGlmICghKHByb3RvdHlwZS5pc09i
amVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChzdGF0ZSwgcHJv
cGVydHlOYW1lLCBzbG90KSkpIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7CiAgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCB2YWx1ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>