<?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>123789</bug_id>
          
          <creation_ts>2013-11-04 23:27:04 -0800</creation_ts>
          <short_desc>IDB: Split backend Cursors and Transactions into their own files</short_desc>
          <delta_ts>2013-11-04 23:54:27 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947041</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-04 23:27:04 -0800</bug_when>
    <thetext>IDB: Split Backend Cursors and Transaction into their own files.

There&apos;s no reason for them to be nested classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947042</commentid>
    <comment_count>1</comment_count>
      <attachid>216007</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-04 23:30:14 -0800</bug_when>
    <thetext>Created attachment 216007
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947045</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-04 23:54:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/158654</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216007</attachid>
            <date>2013-11-04 23:30:14 -0800</date>
            <delta_ts>2013-11-04 23:46:50 -0800</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>122193</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjM1NDFiNy4uNmZhNDU5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc4Niw3ICs3ODYsMTAgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisKKyAgICBNb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuY3BwCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcAorICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmNw
cAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERC
LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDhjMDk1N2UuLmRmNjgzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwx
MDYgQEAKIDIwMTMtMTEtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisg
ICAgICAgIElEQjogU3BsaXQgQmFja2VuZCBDdXJzb3JzIGFuZCBUcmFuc2FjdGlvbiBpbnRvIHRo
ZWlyIG93biBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIzNzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChSZW5hbWUsIG5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlOjp+SURCQmFja2lu
Z1N0b3JlQ3Vyc29ySW50ZXJmYWNlKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkJhY2tpbmdTdG9yZUludGVyZmFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZTo6fklEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJh
Y2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpjcmVhdGUpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4V3JpdGVyOjp3
cml0ZUluZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleFdyaXRlcjo6dmVyaWZ5
SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4V3JpdGVyOjphZGRpbmdLZXlB
bGxvd2VkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGVD
dXJzb3JCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdldE9w
ZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9u
OjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKToKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2
ZWxEQi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29y
TGV2ZWxEQjo6SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjpmaXJzdFNlZWspOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQjo6YWR2YW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjpjb250aW51ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI6OmhhdmVFbnRl
cmVkUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxE
Qjo6aXNQYXN0Qm91bmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjp+SURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxE
Qik6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjpJREJC
YWNraW5nU3RvcmVDdXJzb3JMZXZlbERCKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCYWNraW5nU3RvcmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OnVwZGF0ZUlEQkRhdGFiYXNlVmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpkZWxldGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6cHV0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNsZWFyT2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVs
ZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6Omdl
dEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlTGV2ZWxEQjo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmtleUV4aXN0c0luT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y3JlYXRl
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRl
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6cHV0SW5k
ZXhEYXRhRm9yUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRHcmVhdGVzdEtleUxlc3NU
aGFuT3JFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpm
aW5kS2V5SW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERC
OjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6a2V5RXhpc3RzSW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RT
dG9yZUtleUN1cnNvckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9y
ZUtleUN1cnNvckltcGw6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdFN0b3JlS2V5
Q3Vyc29ySW1wbDo6T2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVj
dFN0b3JlQ3Vyc29ySW1wbDo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6T2JqZWN0U3RvcmVD
dXJzb3JJbXBsOjpPYmplY3RTdG9yZUN1cnNvckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6b2Jq
ZWN0U3RvcmVDdXJzb3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuT2Jq
ZWN0U3RvcmVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZUxldmVsREI6Om9wZW5JbmRleEtleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5kZXhDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y3JlYXRlQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2
ZWxEQi5oOgorIAorICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rp
b25MZXZlbERCKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
TGV2ZWxEQjo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25MZXZlbERCOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25MZXZlbERCOjpyb2xsYmFjayk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaDoKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6Y3JlYXRlQ3Vy
c29yQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0
b3J5QmFja2VuZExldmVsREIuaDoKKworMjAxMy0xMS0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKICAgICAgICAgSURCOiBkZWxldGVEYXRhYmFzZSgpIGludGVyZmFjZSBz
aG91bGQgYmUgYXN5bmNocm9ub3VzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjM3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MzhlOGE5MC4uNDczZGRlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTc4
NCw5ICsxNzg0LDE1IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRlcmZhY2UuaCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25J
bnRlcmZhY2UuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2
ZWxEQi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25MZXZlbERCLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNh
bGxiYWNrcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWIzODE0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCQmFj
a2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlX2gKKyNkZWZpbmUgSURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQktleTsKK2NsYXNzIElEQlJlY29yZElkZW50aWZpZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVy
ZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4g
eworcHVibGljOgorICAgIGVudW0gSXRlcmF0b3JTdGF0ZSB7CisgICAgICAgIFJlYWR5ID0gMCwK
KyAgICAgICAgU2VlaworICAgIH07CisKKyAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmVDdXJz
b3JJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJL
ZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYWR2
YW5jZSh1bnNpZ25lZCBsb25nKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBjbG9uZSgpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
SURCUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorI2VuZGlmIC8vIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmVJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZS5oCmluZGV4IDU2NDdiYWYuLjQ1MGIwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZS5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZV9o
CiAjZGVmaW5lIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZV9oCiAKKyNpbmNsdWRlICJJREJCYWNr
aW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCkBA
IC01MSwzNiArNTMsNyBAQCBjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JREJCYWNraW5nU3RvcmVJbnRlcmZhY2UoKSB7IH0KIAotICAgIGNsYXNzIFRyYW5zYWN0
aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgflRyYW5zYWN0aW9uKCkgeyB9Ci0K
LSAgICAgICAgdmlydHVhbCB2b2lkIGJlZ2luKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
Y29tbWl0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2soKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCByZXNldFRyYW5zYWN0aW9uKCkgPSAwOwotICAgIH07Ci0KLSAgICBj
bGFzcyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3I+IHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIGVudW0gSXRlcmF0b3JTdGF0ZSB7Ci0gICAgICAgICAgICBSZWFkeSA9IDAsCi0gICAg
ICAgICAgICBTZWVrCi0gICAgICAgIH07Ci0KLSAgICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9
Ci0KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgPSAwOwot
ICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwg
SXRlcmF0b3JTdGF0ZSA9IFNlZWspID0gMDsKLSAgICAgICAgdmlydHVhbCBib29sIGFkdmFuY2Uo
dW5zaWduZWQgbG9uZykgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+
IGNsb25lKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5KCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBjb25zdCBJREJSZWNvcmRJZGVu
dGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgPSAwOwotICAgIH07Ci0KLSAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2FjdGlvbj4gY3JlYXRlQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkgPSAw
OwogCiAgICAgLy8gTmV3LXN0eWxlIGFzeW5jaHJvbm91cyBjYWxsYmFja3MKICAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJvb2wgc3Vj
Y2Vzcyk+IEdldElEQkRhdGFiYXNlTWV0YWRhdGFGdW5jdGlvbjsKQEAgLTkwLDMzICs2MywzMyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24pID0gMDsKIAogICAgIC8vIE9sZC1zdHlsZSBzeW5j
aHJvbm91cyBjYWxsYmFja3MKLSAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmplY3RTdG9y
ZShJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlZlB0cjxJREJSZWNv
cmRJZGVudGlmaWVyPiYgZm91bmRJREJSZWNvcmRJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25J
bnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCS2V5JiwgUmVmUHRyPElEQlJlY29yZElkZW50aWZpZXI+JiBmb3VuZElEQlJlY29yZElk
ZW50aWZpZXIpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQo
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYs
IGNvbnN0IElEQlJlY29yZElkZW50aWZpZXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGtleUV4
aXN0c0luSW5kZXgoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYsIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYsIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXksIGJvb2wmIGV4aXN0
cykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBJREJS
ZWNvcmRJZGVudGlmaWVyKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4
KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
UmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VWZXJzaW9uKElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IHJvd0lkLCB1aW50NjRfdCB2ZXJzaW9uKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlVmVyc2lvbihJREJCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3Qgcm93SWQsIHVpbnQ2NF90IHZlcnNp
b24pID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlSW50
ZXJmYWNlOjpUcmFuc2FjdGlvbiYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlv
biYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJL
ZXkmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIElEQlJlY29yZElkZW50aWZpZXIq
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQlJlY29yZElkZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGdldFJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8
Y2hhcj4mIHJlY29yZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZh
bHVlLCBJREJSZWNvcmRJZGVudGlmaWVyKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVS
ZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciYp
ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
YXV0b0luY3JlbWVudCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSA9IDA7CisgICAgdmly
dHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50
ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlSW50
ZXJmYWNlOjpUcmFuc2FjdGlvbiYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KSA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24m
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
OjpDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pID0gMDsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3I+
IG9wZW5PYmplY3RTdG9yZUN1cnNvcihJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0
aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3I+IG9wZW5JbmRleEtl
eUN1cnNvcihJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgPSAwOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4gb3BlbkluZGV4
Q3Vyc29yKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSA9IDA7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gb3Blbk9iamVjdFN0
b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURC
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVD
dXJzb3JJbnRlcmZhY2U+IG9wZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JE
aXJlY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vy
c29ySW50ZXJmYWNlPiBvcGVuSW5kZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25J
bnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBSZWZQ
dHI8SURCS2V5PiYgcHJpbWFyeUtleSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltYXJ5
S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXkmLCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkgPSAwOwogCi0gICAgdmlydHVh
bCBib29sIGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlOjpUcmFuc2FjdGlvbiYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90JiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKSA9IDA7Ci0gICAgdmlydHVh
bCBib29sIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCYga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdTdGF0ZSwgYm9vbCBjaGVja0N1cnJlbnQpID0g
MDsKIAogICAgIHZpcnR1YWwgYm9vbCBtYWtlSW5kZXhXcml0ZXJzKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYsIElEQktleSYgcHJpbWFyeUtleSwgYm9vbCBrZXlXYXNHZW5lcmF0ZWQsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiwgVmVj
dG9yPFJlZlB0cjxJREJJbmRleFdyaXRlcj4+JiBpbmRleFdyaXRlcnMsIFN0cmluZyogZXJyb3JN
ZXNzYWdlLCBib29sJiBjb21wbGV0ZWQpID0gMDsKIApAQCAtMTI4LDQgKzEwMSw0IEBAIHB1Ymxp
YzoKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotI2VuZGlmIC8vIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlX2gK
KyNlbmRpZiAvLyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTU5Yjg0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRl
cmZhY2VfaAorI2RlZmluZSBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZV9oCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBiZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tbWl0KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByb2xsYmFjaygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRUcmFuc2FjdGlvbigpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCA5YmI1OGYyLi4x
NDk1YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLUlEQkN1cnNvckJh
Y2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6Q3Vyc29yPiBjdXJzb3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JU
eXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQpCitJREJDdXJzb3JCYWNrZW5kSW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IGN1cnNvciwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICA6IG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAg
LCBtX2N1cnNvclR5cGUoY3Vyc29yVHlwZSkKICAgICAsIG1fZGF0YWJhc2UoJih0cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaAppbmRleCA1NjVlMzc3Li40ZTc2N2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmgKQEAgLTQ0LDExICs0NCwxMSBAQCBjbGFzcyBJREJLZXlSYW5nZTsKIAogY2xh
c3MgSURCQ3Vyc29yQmFja2VuZEltcGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+
IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBjdXJz
b3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQp
KTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBjdXJzb3Is
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUN1cnNvckludGVyZmFjZT4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5k
SW1wbChjdXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3Rv
cmVJZCkpOwogICAgIH0KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIElEQkN1cnNvckJhY2tlbmRJbXBs
KFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3I+LCBJbmRleGVkREI6
OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CisgICAg
SURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRl
cmZhY2U+LCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCk7CiAKICAgICBjbGFzcyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb247CiAgICAg
Y2xhc3MgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbjsKQEAgLTgxLDggKzgxLDggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9u
OwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogCi0gICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBtX2N1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95
ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZTo6Q3Vyc29yPiBtX3NhdmVkQ3Vyc29yOyAvLyBNdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUg
bV90cmFuc2FjdGlvbi4KKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNl
PiBtX2N1cnNvcjsgLy8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCisg
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gbV9zYXZlZEN1cnNvcjsg
Ly8gTXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIG1fdHJhbnNhY3Rpb24uCiAKICAgICBib29sIG1f
Y2xvc2VkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDM2Yzk5NTMuLmYzNTQx
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBtYXliZUNyZWF0ZVRyYW5zYWN0aW9uQmFja2VuZChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UqLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRy
YW5zYWN0aW9uTW9kZSkgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUN1cnNvckJhY2tlbmQoSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3ImLCBJbmRleGVkREI6
OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSYsIElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYsIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5jcHAK
aW5kZXggMjU3ODk0ZC4uNTNhZjM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4V3JpdGVyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBJREJJbmRl
eFdyaXRlcjo6SURCSW5kZXhXcml0ZXIoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEs
IGNvbnN0IEluZGV4S2V5cwogewogfQogCi12b2lkIElEQkluZGV4V3JpdGVyOjp3cml0ZUluZGV4
S2V5cyhjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2UmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
OjpUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKSBjb25zdAordm9pZCBJREJJbmRleFdyaXRlcjo6d3JpdGVJbmRleEtleXMo
Y29uc3QgSURCUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllciwgSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50
ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlY29yZElkZW50aWZpZXIpOwogICAgIGludDY0
X3QgaW5kZXhJZCA9IG1faW5kZXhNZXRhZGF0YS5pZDsKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBJ
REJJbmRleFdyaXRlcjo6d3JpdGVJbmRleEtleXMoY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciog
cmVjb3JkSWRlbnRpZmllciwKICAgICB9CiB9CiAKLWJvb2wgSURCSW5kZXhXcml0ZXI6OnZlcmlm
eUluZGV4S2V5cyhJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UmIGJhY2tpbmdTdG9yZSwgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGJvb2wmIGNh
bkFkZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwgU3RyaW5nKiBlcnJvck1lc3NhZ2Up
IGNvbnN0Citib29sIElEQkluZGV4V3JpdGVyOjp2ZXJpZnlJbmRleEtleXMoSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50
ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgYm9vbCYgY2FuQWRkS2V5cywgY29uc3QgSURCS2V5KiBw
cmltYXJ5S2V5LCBTdHJpbmcqIGVycm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICBjYW5BZGRLZXlz
ID0gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luZGV4S2V5cy5zaXplKCk7
ICsraSkgewpAQCAtNjgsNyArNjgsNyBAQCBib29sIElEQkluZGV4V3JpdGVyOjp2ZXJpZnlJbmRl
eEtleXMoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlJiBiYWNraW5nU3RvcmUsIElEQgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIElEQkluZGV4V3JpdGVyOjphZGRpbmdLZXlBbGxvd2VkKElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSYgYmFja2luZ1N0b3JlLCBJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5KiBpbmRleEtl
eSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5LCBib29sJiBhbGxvd2VkKSBjb25zdAorYm9vbCBJ
REJJbmRleFdyaXRlcjo6YWRkaW5nS2V5QWxsb3dlZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2Um
IGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkqIGluZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1hcnlL
ZXksIGJvb2wmIGFsbG93ZWQpIGNvbnN0CiB7CiAgICAgYWxsb3dlZCA9IGZhbHNlOwogICAgIGlm
ICghbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4V3JpdGVyLmgKaW5kZXggNWYwMmY1Mi4uY2YxMjU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhXcml0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleFdyaXRlci5o
CkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IElEQkluZGV4V3JpdGVyKGluZGV4TWV0YWRhdGEsIGluZGV4S2V5cykpOwogICAgIH0KIAotICAg
IGJvb2wgdmVyaWZ5SW5kZXhLZXlzKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSYsIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBib29sJiBjYW5BZGRLZXlzLCBjb25z
dCBJREJLZXkqIHByaW1hcnlLZXkgPSAwLCBTdHJpbmcqIGVycm9yTWVzc2FnZSA9IDApIGNvbnN0
IFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIHZlcmlmeUluZGV4S2V5cyhJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGJvb2wmIGNhbkFkZEtleXMsIGNvbnN0IElEQktleSogcHJpbWFyeUtleSA9IDAsIFN0cmluZyog
ZXJyb3JNZXNzYWdlID0gMCkgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJOOwogCi0gICAgdm9pZCB3
cml0ZUluZGV4S2V5cyhjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyKiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlJiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYsIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdDsKKyAgICB2b2lkIHdy
aXRlSW5kZXhLZXlzKGNvbnN0IElEQlJlY29yZElkZW50aWZpZXIqLCBJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBJREJJbmRleFdyaXRlcihjb25zdCBJREJJbmRleE1ldGFkYXRhJiwgY29uc3QgSW5kZXhLZXlz
Jik7CiAKLSAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
JiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYsIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktl
eSogaW5kZXhLZXksIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwgYm9vbCYgYWxsb3dlZCkgY29u
c3QgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYs
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktleSogcHJpbWFyeUtleSwgYm9v
bCYgYWxsb3dlZCkgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAgICAgY29uc3QgSURCSW5k
ZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7CiAgICAgSW5kZXhLZXlzIG1faW5kZXhLZXlzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCAxZmZmOWE5Li44MjhkMTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVDbGVhck9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhCiAgICAgc2NoZWR1bGVUYXNrKENsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
bV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgY2Fs
bGJhY2tzKSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U6OkN1cnNvciYgY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKQorUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
PiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIHJldHVybiBtX2RhdGFiYXNlLT5mYWN0b3J5
QmFja2VuZCgpLmNyZWF0ZUN1cnNvckJhY2tlbmQoKnRoaXMsIGN1cnNvciwgY3Vyc29yVHlwZSwg
dGFza1R5cGUsIG9iamVjdFN0b3JlSWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4
IGEyNWIxMjEuLjdlNmIzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIE9W
RVJSSURFIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cysrOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2ZW50KCkgT1ZFUlJJREUgeyBtX3BlbmRpbmdQcmVlbXB0
aXZlRXZlbnRzLS07IEFTU0VSVChtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzID49IDApOyB9Ci0g
ICAgdmlydHVhbCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiBiYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpIHsgcmV0dXJuICptX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOyB9
CisgICAgdmlydHVhbCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgYmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSB7IHJldHVybiAqbV9iYWNraW5nU3RvcmVUcmFuc2FjdGlvbjsg
fQogCiAgICAgdmlydHVhbCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UmIGRhdGFiYXNlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gKm1fZGF0YWJhc2U7IH0KIApAQCAtODEsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlRGVsZXRlUmFuZ2VPcGVyYXRpb24o
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDbGVhck9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREUgRklOQUw7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2U6OkN1cnNvciYsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
Q3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6
OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVj
dFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CkBAIC0xMTQsNyArMTE0LDcg
QEAgcHJpdmF0ZToKICAgICBUYXNrUXVldWUgbV9wcmVlbXB0aXZlVGFza1F1ZXVlOwogICAgIFRh
c2tRdWV1ZSBtX2Fib3J0VGFza1F1ZXVlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24+IG1fYmFja2luZ1N0b3JlVHJhbnNhY3Rpb247
CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNl
PiBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOwogCiAgICAgLy8gRklYTUU6IGRlbGV0ZSB0aGUg
dGltZXIgb25jZSB3ZSBoYXZlIHRocmVhZHMgaW5zdGVhZC4KICAgICBUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiBtX3Rhc2tUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlLmgKaW5kZXggMTIyMzY4Yi4uNTA3YjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTgyLDEwICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFk
ZFByZWVtcHRpdmVFdmVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVQcmVl
bXB0aXZlRXZlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZTo6VHJhbnNhY3Rpb24mIGJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkgPSAwOworICAgIHZpcnR1
YWwgSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIGJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlJiBk
YXRhYmFzZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZTo6Q3Vyc29yJiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFj
a2VuZChJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNvclR5
cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkgPSAwOwogCiAgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcAppbmRleCA3M2JiZTdiZi4u
YTM2OWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKQEAgLTg4
LDcgKzg4LDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oKQogICAgIGlmIChtX2tleVJh
bmdlLT5pc09ubHlLZXkoKSkKICAgICAgICAga2V5ID0gbV9rZXlSYW5nZS0+bG93ZXIoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29y
PiBiYWNraW5nU3RvcmVDdXJzb3I7CisgICAgICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJz
b3JJbnRlcmZhY2U+IGJhY2tpbmdTdG9yZUN1cnNvcjsKICAgICAgICAgaWYgKG1faW5kZXhJZCA9
PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAgICAgICAgIEFTU0VSVChtX2N1
cnNvclR5cGUgIT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKICAgICAgICAgICAgIC8vIE9i
amVjdFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24KQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIE9w
ZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oKQogICAgIGlmIChtX3Rhc2tUeXBlID09IElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHJlZW1wdGl2ZVRhc2spCiAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPmFkZFByZWVtcHRpdmVFdmVudCgpOwogCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3I7CisgICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gYmFja2luZ1N0b3JlQ3Vyc29yOwogICAgIGlmICht
X2luZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7CiAgICAgICAgIEFTU0VS
VChtX2N1cnNvclR5cGUgIT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKICAgICAgICAgYmFj
a2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvciht
X3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1f
b2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgbV9kaXJlY3Rpb24pOwpAQCAtMjg4LDcg
KzI4OCw3IEBAIHZvaWQgQ291bnRPcGVyYXRpb246OnBlcmZvcm0oKQogewogICAgIExPRyhTdG9y
YWdlQVBJLCAiQ291bnRPcGVyYXRpb24iKTsKICAgICB1aW50MzJfdCBjb3VudCA9IDA7Ci0gICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJz
b3I7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gYmFja2luZ1N0
b3JlQ3Vyc29yOwogCiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZh
bGlkSWQpCiAgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVu
T2JqZWN0U3RvcmVLZXlDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElu
ZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDb3VudE9wZXJh
dGlvbjo6cGVyZm9ybSgpCiB2b2lkIERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsK
ICAgICBMT0coU3RvcmFnZUFQSSwgIkRlbGV0ZVJhbmdlT3BlcmF0aW9uIik7Ci0gICAgUmVmUHRy
PElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBt
X2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tl
eVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOworICAgIFJlZlB0cjxJREJCYWNr
aW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0
b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0
KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CiAgICAgaWYgKGJhY2tpbmdTdG9yZUN1cnNvcikg
ewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVS
ZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFz
ZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3JkSWRlbnRpZmll
cigpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNjNWY2MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2lu
Z1N0b3JlQ3Vyc29yTGV2ZWxEQi5jcHAKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxE
Qi5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIFVTRShMRVZFTERCKQorCisj
aW5jbHVkZSAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oIgorI2luY2x1ZGUgIkxldmVsREJUcmFu
c2FjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0lEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREI6OklEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIoY29uc3QgSURCQmFja2luZ1N0
b3JlQ3Vyc29yTGV2ZWxEQiogb3RoZXIpCisgICAgOiBtX3RyYW5zYWN0aW9uKG90aGVyLT5tX3Ry
YW5zYWN0aW9uKQorICAgICwgbV9jdXJzb3JPcHRpb25zKG90aGVyLT5tX2N1cnNvck9wdGlvbnMp
CisgICAgLCBtX2N1cnJlbnRLZXkob3RoZXItPm1fY3VycmVudEtleSkKKyAgICAsIG1fcmVjb3Jk
SWRlbnRpZmllcihJREJSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoKSkKK3sKKyAgICBpZiAob3Ro
ZXItPm1faXRlcmF0b3IpIHsKKyAgICAgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNhY3Rpb24tPmNy
ZWF0ZUl0ZXJhdG9yKCk7CisKKyAgICAgICAgaWYgKG90aGVyLT5tX2l0ZXJhdG9yLT5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgICAgIG1faXRlcmF0b3ItPnNlZWsob3RoZXItPm1faXRlcmF0b3ItPmtl
eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgbV9yZWNvcmRJZGVudGlmaWVyLT5yZXNldChvdGhlci0+bV9yZWNv
cmRJZGVudGlmaWVyLT5lbmNvZGVkUHJpbWFyeUtleSgpLCBvdGhlci0+bV9yZWNvcmRJZGVudGlm
aWVyLT52ZXJzaW9uKCkpOworfQorCitib29sIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI6
OmZpcnN0U2VlaygpCit7CisgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNhY3Rpb24tPmNyZWF0ZUl0
ZXJhdG9yKCk7CisgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKQorICAgICAgICBtX2l0
ZXJhdG9yLT5zZWVrKG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpOworICAgIGVsc2UKKyAgICAgICAg
bV9pdGVyYXRvci0+c2VlayhtX2N1cnNvck9wdGlvbnMuaGlnaEtleSk7CisKKyAgICByZXR1cm4g
Y29udGludWVGdW5jdGlvbigwLCBSZWFkeSk7Cit9CisKK2Jvb2wgSURCQmFja2luZ1N0b3JlQ3Vy
c29yTGV2ZWxEQjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIHdoaWxlIChj
b3VudC0tKSB7CisgICAgICAgIGlmICghY29udGludWVGdW5jdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJREJCYWNr
aW5nU3RvcmVDdXJzb3JMZXZlbERCOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5
LCBJdGVyYXRvclN0YXRlIG5leHRTdGF0ZSkKK3sKKyAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91
c0tleSA9IG1fY3VycmVudEtleTsKKworICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVlOwor
CisgICAgLy8gV2hlbiBpdGVyYXRpbmcgd2l0aCBQcmV2Tm9EdXBsaWNhdGUsIHNwZWMgcmVxdWly
ZXMgdGhhdCB0aGUKKyAgICAvLyB2YWx1ZSB3ZSB5aWVsZCBmb3IgZWFjaCBrZXkgaXMgdGhlIGZp
cnN0IGR1cGxpY2F0ZSBpbiBmb3J3YXJkcworICAgIC8vIG9yZGVyLgorICAgIFJlZlB0cjxJREJL
ZXk+IGxhc3REdXBsaWNhdGVLZXk7CisKKyAgICBib29sIGZvcndhcmQgPSBtX2N1cnNvck9wdGlv
bnMuZm9yd2FyZDsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKG5leHRTdGF0ZSA9PSBT
ZWVrKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgc2Vla2luZyBmb3IgcmV2ZXJz
ZSBjdXJzb3JzIGFzIHdlbGwuCisgICAgICAgICAgICBpZiAoZmlyc3RJdGVyYXRpb24gJiYga2V5
ICYmIGZvcndhcmQpIHsKKyAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5zZWVrKGVuY29kZUtl
eSgqa2V5KSk7CisgICAgICAgICAgICAgICAgZmlyc3RJdGVyYXRpb24gPSBmYWxzZTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZm9yd2FyZCkKKyAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5u
ZXh0KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJl
digpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5leHRTdGF0ZSA9IFNlZWs7IC8vIGZv
ciBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMKKworICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgaWYgKCFmb3J3YXJkICYmIGxhc3REdXBsaWNhdGVLZXkuZ2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNl
IHdlIGhpdCB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgLy8gdGhlIGRhdGEuCisgICAgICAg
ICAgICAgICAgZm9yd2FyZCA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkgeworICAgICAgICAgICAgaWYgKCFmb3J3YXJkICYmIGxh
c3REdXBsaWNhdGVLZXkuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHdh
bGsgZm9yd2FyZCBiZWNhdXNlIG5vdyB3ZSdyZSBiZXlvbmQgdGhlCisgICAgICAgICAgICAgICAg
Ly8gYm91bmRzIGRlZmluZWQgYnkgdGhlIGN1cnNvci4KKyAgICAgICAgICAgICAgICBmb3J3YXJk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXZlRW50
ZXJlZFJhbmdlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBUaGUgcm93
IG1heSBub3QgbG9hZCBiZWNhdXNlIHRoZXJlJ3MgYSBzdGFsZSBlbnRyeSBpbiB0aGUKKyAgICAg
ICAgLy8gaW5kZXguIFRoaXMgaXMgbm90IGZhdGFsLgorICAgICAgICBpZiAoIWxvYWRDdXJyZW50
Um93KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoa2V5KSB7CisgICAg
ICAgICAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRLZXkt
PmlzTGVzc1RoYW4oa2V5KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChrZXktPmlzTGVzc1RoYW4obV9jdXJy
ZW50S2V5LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLnVuaXF1ZSkgewor
CisgICAgICAgICAgICBpZiAobV9jdXJyZW50S2V5LT5pc0VxdWFsKHByZXZpb3VzS2V5LmdldCgp
KSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBhYmxlIHRvIHdhbGsg
Zm9yd2FyZCBhbGwgdGhlIHdheQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBwcmV2aW91cyBr
ZXkuCisgICAgICAgICAgICAgICAgQVNTRVJUKCFsYXN0RHVwbGljYXRlS2V5LmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFmb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFsYXN0RHVwbGljYXRlS2V5LmdldCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGxhc3REdXBsaWNhdGVLZXkgPSBtX2N1cnJlbnRLZXk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gd2FsayBmb3J3YXJkIGJlY2F1c2Ugd2UgaGl0IHRo
ZSBib3VuZGFyeQorICAgICAgICAgICAgICAgIC8vIGJldHdlZW4ga2V5IHJhbmdlcy4KKyAgICAg
ICAgICAgICAgICBpZiAoIWxhc3REdXBsaWNhdGVLZXktPmlzRXF1YWwobV9jdXJyZW50S2V5Lmdl
dCgpKSkgeworICAgICAgICAgICAgICAgICAgICBmb3J3YXJkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgQVNTRVJUKCFsYXN0RHVwbGljYXRlS2V5LmdldCgpIHx8IChmb3J3YXJkICYmIGxh
c3REdXBsaWNhdGVLZXktPmlzRXF1YWwobV9jdXJyZW50S2V5LmdldCgpKSkpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI6OmhhdmVFbnRl
cmVkUmFuZ2UoKSBjb25zdAoreworICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgewor
ICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4pCisgICAgICAgICAgICByZXR1cm4g
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXko
KSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPiAwOworCisgICAgICAgIHJldHVybiBJREJCYWNr
aW5nU3RvcmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1
cnNvck9wdGlvbnMubG93S2V5KSA+PSAwOworICAgIH0KKyAgICBpZiAobV9jdXJzb3JPcHRpb25z
LmhpZ2hPcGVuKQorICAgICAgICByZXR1cm4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y29tcGFy
ZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpIDwg
MDsKKworICAgIHJldHVybiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlz
KG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPD0gMDsKK30KKwor
Ym9vbCBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjppc1Bhc3RCb3VuZHMoKSBjb25zdAor
eworICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICBpZiAobV9jdXJz
b3JPcHRpb25zLmhpZ2hPcGVuKQorICAgICAgICAgICAgcmV0dXJuIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OmNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9u
cy5oaWdoS2V5KSA+PSAwOworICAgICAgICByZXR1cm4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
Y29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hL
ZXkpID4gMDsKKyAgICB9CisKKyAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4pCisgICAg
ICAgIHJldHVybiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlzKG1faXRl
cmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA8PSAwOworICAgIHJldHVybiBJ
REJCYWNraW5nU3RvcmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgp
LCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA8IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxEQikK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTZlOWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVDdXJz
b3JMZXZlbERCLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCQmFj
a2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQl9oCisjZGVmaW5lIElEQkJhY2tpbmdTdG9yZUN1cnNvckxl
dmVsREJfaAorCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmgiCisj
aW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCUmVjb3JkSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIkxldmVsREJJdGVyYXRvci5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisjaWYgVVNFKExFVkVMREIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlOworY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9uOworCitjbGFzcyBJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCIDogcHVibGljIElEQkJhY2tpbmdTdG9yZUN1cnNv
ckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RydWN0IEN1cnNvck9wdGlvbnMgeworICAgICAg
ICBpbnQ2NF90IGRhdGFiYXNlSWQ7CisgICAgICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZDsKKyAg
ICAgICAgaW50NjRfdCBpbmRleElkOworICAgICAgICBWZWN0b3I8Y2hhcj4gbG93S2V5OworICAg
ICAgICBib29sIGxvd09wZW47CisgICAgICAgIFZlY3RvcjxjaGFyPiBoaWdoS2V5OworICAgICAg
ICBib29sIGhpZ2hPcGVuOworICAgICAgICBib29sIGZvcndhcmQ7CisgICAgICAgIGJvb2wgdW5p
cXVlOworICAgIH07CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29u
dGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpIE9WRVJSSURF
OworICAgIGJvb2wgZmlyc3RTZWVrKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBjbG9uZSgpIE9WRVJSSURFID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV9jdXJyZW50S2V5OyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWUoKSBjb25zdCBPVkVSUklERSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBJREJSZWNvcmRJ
ZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gKm1f
cmVjb3JkSWRlbnRpZmllcjsgfQorICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZUN1cnNvckxl
dmVsREIoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRSb3coKSA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCKExldmVsREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisg
ICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKKyAgICAgICAgLCBtX2N1cnNvck9w
dGlvbnMoY3Vyc29yT3B0aW9ucykKKyAgICAgICAgLCBtX3JlY29yZElkZW50aWZpZXIoSURCUmVj
b3JkSWRlbnRpZmllcjo6Y3JlYXRlKCkpCisgICAgeworICAgIH0KKyAgICBleHBsaWNpdCBJREJC
YWNraW5nU3RvcmVDdXJzb3JMZXZlbERCKGNvbnN0IElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVs
REIqIG90aGVyKTsKKworICAgIHZpcnR1YWwgVmVjdG9yPGNoYXI+IGVuY29kZUtleShjb25zdCBJ
REJLZXkmKSA9IDA7CisKKyAgICBib29sIGlzUGFzdEJvdW5kcygpIGNvbnN0OworICAgIGJvb2wg
aGF2ZUVudGVyZWRSYW5nZSgpIGNvbnN0OworCisgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBtX3Ry
YW5zYWN0aW9uOworICAgIGNvbnN0IEN1cnNvck9wdGlvbnMgbV9jdXJzb3JPcHRpb25zOworICAg
IE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1faXRlcmF0b3I7CisgICAgUmVmUHRyPElEQktleT4g
bV9jdXJyZW50S2V5OworICAgIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiBtX3JlY29yZElk
ZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
TEVWRUxEQikKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxl
dmVsREIuY3BwCmluZGV4IGI5NWM1MzguLjY4YTdlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5n
U3RvcmVMZXZlbERCLmNwcApAQCAtMzAsNiArMzAsOCBAQAogCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgIkhpc3RvZ3JhbVN1cHBvcnQuaCIKKyNpbmNsdWRlICJJREJCYWNraW5n
U3RvcmVDdXJzb3JMZXZlbERCLmgiCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rp
b25MZXZlbERCLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhXcml0ZXIuaCIKICNpbmNsdWRlICJJREJL
ZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCkBAIC03NCw3ICs3Niw2IEBAIGVudW0gSURC
QmFja2luZ1N0b3JlTGV2ZWxEQkVycm9yU291cmNlIHsKICAgICBHZXROZXdWZXJzaW9uTnVtYmVy
LAogICAgIENyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEsCiAgICAgRGVsZXRlRGF0YWJhc2UsCi0g
ICAgVHJhbnNhY3Rpb25Db21taXQsCiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFs
RXJyb3JNYXgsCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RhdGljIGludCBjb21wYXJlS2V5
cyhjb25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYikKICAgICByZXR1
cm4gY29tcGFyZShhLCBiKTsKIH0KIAotc3RhdGljIGludCBjb21wYXJlSW5kZXhLZXlzKGNvbnN0
IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiKQoraW50IElEQkJhY2tpbmdT
dG9yZUxldmVsREI6OmNvbXBhcmVJbmRleEtleXMoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25z
dCBMZXZlbERCU2xpY2UmIGIpCiB7CiAgICAgcmV0dXJuIGNvbXBhcmUoYSwgYiwgdHJ1ZSk7CiB9
CkBAIC02NDYsMTEgKzY0NywxMSBAQCBib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0
ZUlEQkRhdGFiYXNlTWV0YURhdGEoSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OnVwZGF0ZUlEQkRhdGFi
YXNlVmVyc2lvbihJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCByb3dJZCwgdWludDY0X3QgdmVyc2lvbikKK2Jvb2wgSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6dXBkYXRlSURCRGF0YWJhc2VWZXJzaW9uKElEQkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCByb3dJZCwgdWludDY0X3QgdmVy
c2lvbikKIHsKICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb24pCiAgICAgICAgIHZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50
VmVyc2lvbjsKLSAgICBwdXRWYXJJbnQoVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZy
b20odHJhbnNhY3Rpb24pLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUocm93SWQsIERhdGFi
YXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgdmVyc2lvbik7CisgICAgcHV0VmFySW50
KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJv
bSh0cmFuc2FjdGlvbiksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCB2ZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtODI3LDEyICs4MjgsMTIgQEAgV0FSTl9VTlVTRURfUkVUVVJOIHN0YXRpYyBi
b29sIHNldE1heE9iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVP
YmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
KQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAgICBMT0coU3RvcmFn
ZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAgICAg
aWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNh
Y3Rpb24gPSBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5z
YWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERC
VHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6OmxldmVsREJU
cmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogICAgIGlmICghc2V0TWF4T2JqZWN0U3RvcmVJ
ZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTg1OCwxMiArODU5LDEyIEBAIGJvb2wgSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpU
cmFuc2FjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKICAgICBpZiAoIUtleVBy
ZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElE
QkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9t
KHRyYW5zYWN0aW9uKTsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlv
biA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0aW9u
RnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lOwogICAgIGJv
b2wgZm91bmQgPSBmYWxzZTsKQEAgLTg4NywxMiArODg4LDEyIEBAIGJvb2wgSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpU
cmFuc2FjCiAgICAgcmV0dXJuIGNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQpOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Omdl
dFJlY29yZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eSYga2V5LCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkKK2Jvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIHJlY29yZCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwg
IklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmdldFJlY29yZCIpOwogICAgIGlmICghS2V5UHJlZml4
Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQjo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJh
bnNhY3Rpb24pOworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0g
SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9t
KHRyYW5zYWN0aW9uKTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZlbGRiS2V5ID0gT2Jq
ZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsK
ICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKQEAgLTk0NSwxNCArOTQ2LDE0IEBAIFdBUk5fVU5VU0VE
X1JFVFVSTiBzdGF0aWMgYm9vbCBnZXROZXdWZXJzaW9uTnVtYmVyKExldmVsREJUcmFuc2FjdGlv
biogdHJhbnNhY3RpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6cHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5JiBrZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBWYWx1ZSwgSURC
UmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKK2Jvb2wgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6cHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleSYga2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJwVmFsdWUsIElEQlJl
Y29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpwdXRSZWNvcmQiKTsKICAgICBpZiAoIUtleVByZWZp
eDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAKLSAgICBMZXZlbERCVHJhbnNhY3Rp
b24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0
aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBMZXZlbERCVHJh
bnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
TGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAgICAgaW50NjRf
dCB2ZXJzaW9uID0gLTE7CiAgICAgYm9vbCBvayA9IGdldE5ld1ZlcnNpb25OdW1iZXIobGV2ZWxE
QlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCB2ZXJzaW9uKTsKICAgICBp
ZiAoIW9rKQpAQCAtOTc1LDEyICs5NzYsMTIgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERC
OjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYgdHIKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjbGVhck9i
amVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK2Jvb2wgSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6Y2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6Y2xlYXJPYmplY3RTdG9yZSIpOwogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElk
cyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24p
OworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0
aW9uKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBLZXlQcmVmaXgoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCkuZW5jb2RlKCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0
b3BLZXkgPSBLZXlQcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCArIDEpLmVuY29kZSgp
OwogCkBAIC05ODgsMTMgKzk4OSwxMyBAQCBib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNs
ZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZVJlY29y
ZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQlJlY29yZElk
ZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIpCitib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6
OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIExPRyhTdG9yYWdl
QVBJLCAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlUmVjb3JkIik7CiAKICAgICBpZiAo
IUtleVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlv
biA9IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rp
b25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFu
c2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5z
YWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0
U3RvcmVEYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmllci5lbmNvZGVkUHJpbWFyeUtleSgpKTsKICAgICBs
ZXZlbERCVHJhbnNhY3Rpb24tPnJlbW92ZShvYmplY3RTdG9yZURhdGFLZXkpOwpAQCAtMTAwNSwx
MSArMTAwNiwxMSBAQCBib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZVJlY29yZChJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJgogfQogCiAKLWJvb2wgSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQjo6Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QmIGtleUdlbmVyYXRvckN1cnJlbnRO
dW1iZXIpCitib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmdldEtleUdlbmVyYXRvckN1cnJl
bnROdW1iZXIoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCYga2V5
R2VuZXJhdG9yQ3VycmVudE51bWJlcikKIHsKICAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBM
ZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsK
KyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlv
bik7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktl
eSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKTsK
IApAQCAtMTA1NSwxMSArMTA1NiwxMSBAQCBib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6Omdl
dEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlSW50ZXJmYQogICAgIHJl
dHVybiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9y
ZUxldmVsREI6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNr
Q3VycmVudCkKK2Jvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6bWF5YmVVcGRhdGVLZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3VycmVudCkKIHsKICAgICBpZiAoIUtleVByZWZp
eDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJh
Y2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRy
YW5zYWN0aW9uKTsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9
IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJv
bSh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoY2hlY2tDdXJyZW50KSB7CiAgICAgICAgIGludDY0
X3QgY3VycmVudE51bWJlcjsKQEAgLTEwNzUsMTMgKzEwNzYsMTMgQEAgYm9vbCBJREJCYWNraW5n
U3RvcmVMZXZlbERCOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFj
a2luZ1N0b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZl
bERCOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXksIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiYg
Zm91bmRJREJSZWNvcmRJZGVudGlmaWVyKQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNl
JiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IElEQktleSYga2V5LCBSZWZQdHI8SURCUmVjb3JkSWRlbnRpZmllcj4mIGZvdW5kSURC
UmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9y
ZUxldmVsREI6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUiKTsKICAgICBpZiAoIUtleVByZWZpeDo6
dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZl
bERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpUcmFuc2FjdGlvbjo6bGV2
ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CisgICAgTGV2ZWxEQlRyYW5zYWN0aW9u
KiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6
OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBsZXZlbGRiS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwga2V5KTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIApAQCAtMTE5Niwx
MiArMTE5NywxMiBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgc2V0TWF4SW5kZXhJ
ZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbgogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdT
dG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNN
dWx0aUVudHJ5KQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjcmVhdGVJbmRleChJREJC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnkpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVM
ZXZlbERCOjpjcmVhdGVJbmRleCIpOwogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rp
b24pOworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5z
YWN0aW9uKTsKICAgICBpZiAoIXNldE1heEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xMjE3LDEyICsxMjE4LDEyIEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y3Jl
YXRlSW5kZXgoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpkZWxldGVJbmRleChJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKK2Jv
b2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogewogICAgIExPRyhTdG9yYWdlQVBJ
LCAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlSW5kZXgiKTsKICAgICBpZiAoIUtleVBy
ZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2Fj
dGlvbiA9IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNh
Y3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJU
cmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRy
YW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5k
ZXhNZXRhRGF0YVN0YXJ0ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleE1l
dGFEYXRhRW5kID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQpOwpAQCAtMTIzNCw3ICsxMjM1LDcgQEAgYm9vbCBJREJCYWNr
aW5nU3RvcmVMZXZlbERCOjpkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRy
YW5zYWN0aW9uJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OnB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0IElEQlJl
Y29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCitib29sIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OnB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbklu
dGVyZmFjZSYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBJREJSZWNv
cmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAi
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkIik7CiAgICAgQVNT
RVJUKGtleS5pc1ZhbGlkKCkpOwpAQCAtMTI0Miw3ICsxMjQzLDcgQEAgYm9vbCBJREJCYWNraW5n
U3RvcmVMZXZlbERCOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlOjpUcmEKICAgICBpZiAoIUtleVByZWZpeDo6dmFsaWRJZHMoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgaW5kZXhJZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAgIExl
dmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIHJl
Y29yZElkZW50aWZpZXItPmVuY29kZWRQcmltYXJ5S2V5KCkpOwogCiAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7CkBAIC0xMjY0LDcgKzEyNjUsNyBAQCBzdGF0aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlM
ZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29ucwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHdoaWxlIChjb21wYXJlSW5kZXhL
ZXlzKGl0LT5rZXkoKSwgdGFyZ2V0KSA+IDApIHsKKyAgICB3aGlsZSAoSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6Y29tcGFyZUluZGV4S2V5cyhpdC0+a2V5KCksIHRhcmdldCkgPiAwKSB7CiAgICAg
ICAgIGl0LT5wcmV2KCk7CiAgICAgICAgIGlmICghaXQtPmlzVmFsaWQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEyNzYsNyArMTI3Nyw3IEBAIHN0YXRpYyBib29sIGZpbmRHcmVh
dGVzdEtleUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBj
b25zCiAKICAgICAgICAgLy8gVGhlcmUgY2FuIGJlIHNldmVyYWwgaW5kZXgga2V5cyB0aGF0IGNv
bXBhcmUgZXF1YWwuIFdlIHdhbnQgdGhlIGxhc3Qgb25lLgogICAgICAgICBpdC0+bmV4dCgpOwot
ICAgIH0gd2hpbGUgKGl0LT5pc1ZhbGlkKCkgJiYgIWNvbXBhcmVJbmRleEtleXMoaXQtPmtleSgp
LCB0YXJnZXQpKTsKKyAgICB9IHdoaWxlIChpdC0+aXNWYWxpZCgpICYmICFJREJCYWNraW5nU3Rv
cmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlzKGl0LT5rZXkoKSwgdGFyZ2V0KSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTEyOTgsNyArMTI5OSw3IEBAIHN0YXRpYyBib29sIHZlcnNpb25F
eGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2Rl
ZFByaW1hcnlLZXksIGJvb2wmIGZvdW5kKQorYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpm
aW5kS2V5SW5JbmRleChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFBy
aW1hcnlLZXksIGJvb2wmIGZvdW5kKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQmFja2lu
Z1N0b3JlTGV2ZWxEQjo6ZmluZEtleUluSW5kZXgiKTsKICAgICBBU1NFUlQoS2V5UHJlZml4Ojp2
YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSk7CkBAIC0xMzA2LDcg
KzEzMDcsNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmZpbmRLZXlJbkluZGV4KElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3RpbwogICAgIEFTU0VSVChmb3VuZEVuY29k
ZWRQcmltYXJ5S2V5LmlzRW1wdHkoKSk7CiAgICAgZm91bmQgPSBmYWxzZTsKIAotICAgIExldmVs
REJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOworICAg
IExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsK
ICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSk7CiAgICAgT3duUHRyPExl
dmVsREJJdGVyYXRvcj4gaXQgPSBsZXZlbERCVHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7
CiAgICAgaXQtPnNlZWsobGV2ZWxkYktleSk7CkBAIC0xMzQwLDcgKzEzNDEsNyBAQCBib29sIElE
QkJhY2tpbmdTdG9yZUxldmVsREI6OmZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZTo6VHJhbnNhY3RpbwogICAgIH0KIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERC
OjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBSZWZQdHI8SURCS2V5PiYg
cHJpbWFyeUtleSkKK2Jvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0UHJpbWFyeUtleVZp
YUluZGV4KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5JiBrZXksIFJlZlB0cjxJREJLZXk+JiBwcmltYXJ5S2V5KQogewogICAg
IExPRyhTdG9yYWdlQVBJLCAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0UHJpbWFyeUtleVZp
YUluZGV4Iik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQpKQpAQCAtMTM2MSw3ICsxMzYyLDcgQEAgYm9vbCBJREJCYWNraW5n
U3RvcmVMZXZlbERCOjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlOjpUcmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZl
bERCOjprZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpCitib29sIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OmtleUV4aXN0c0luSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZh
Y2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjprZXlFeGlzdHNJbkluZGV4Iik7CiAgICAgaWYgKCFL
ZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQpA
QCAtMTQzNiwxODIgKzE0MzcsMTkgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjp1cGRh
dGVLZXlHZW5lcmF0b3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJgogICAgIHJldHVy
biBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24uYmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgc3RhdGljX2Nh
c3Q8aW50NjRfdD4oZmxvb3Ioa2V5Lm51bWJlcigpKSkgKyAxLCBjaGVja0N1cnJlbnQpOwogfQog
Ci1JREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNvcihjb25zdCBJREJCYWNraW5n
U3RvcmVMZXZlbERCOjpDdXJzb3IqIG90aGVyKQotICAgIDogbV90cmFuc2FjdGlvbihvdGhlci0+
bV90cmFuc2FjdGlvbikKLSAgICAsIG1fY3Vyc29yT3B0aW9ucyhvdGhlci0+bV9jdXJzb3JPcHRp
b25zKQotICAgICwgbV9jdXJyZW50S2V5KG90aGVyLT5tX2N1cnJlbnRLZXkpCi0gICAgLCBtX3Jl
Y29yZElkZW50aWZpZXIoSURCUmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKCkpCi17Ci0gICAgaWYg
KG90aGVyLT5tX2l0ZXJhdG9yKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9u
LT5jcmVhdGVJdGVyYXRvcigpOwotCi0gICAgICAgIGlmIChvdGhlci0+bV9pdGVyYXRvci0+aXNW
YWxpZCgpKSB7Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yLT5zZWVrKG90aGVyLT5tX2l0ZXJhdG9y
LT5rZXkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9pdGVyYXRvci0+aXNWYWxpZCgpKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIG1fcmVjb3JkSWRlbnRpZmllci0+cmVzZXQob3RoZXItPm1f
cmVjb3JkSWRlbnRpZmllci0+ZW5jb2RlZFByaW1hcnlLZXkoKSwgb3RoZXItPm1fcmVjb3JkSWRl
bnRpZmllci0+dmVyc2lvbigpKTsKLX0KLQotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpD
dXJzb3I6OmZpcnN0U2VlaygpCi17Ci0gICAgbV9pdGVyYXRvciA9IG1fdHJhbnNhY3Rpb24tPmNy
ZWF0ZUl0ZXJhdG9yKCk7Ci0gICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKQotICAgICAg
ICBtX2l0ZXJhdG9yLT5zZWVrKG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9pdGVyYXRvci0+c2VlayhtX2N1cnNvck9wdGlvbnMuaGlnaEtleSk7Ci0KLSAgICBy
ZXR1cm4gY29udGludWVGdW5jdGlvbigwLCBSZWFkeSk7Ci19Ci0KLWJvb2wgSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6Q3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQpCi17Ci0gICAg
d2hpbGUgKGNvdW50LS0pIHsKLSAgICAgICAgaWYgKCFjb250aW51ZUZ1bmN0aW9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJ
REJLZXkqIGtleSwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUpCi17Ci0gICAgUmVmUHRyPElEQktl
eT4gcHJldmlvdXNLZXkgPSBtX2N1cnJlbnRLZXk7Ci0KLSAgICBib29sIGZpcnN0SXRlcmF0aW9u
ID0gdHJ1ZTsKLQotICAgIC8vIFdoZW4gaXRlcmF0aW5nIHdpdGggUHJldk5vRHVwbGljYXRlLCBz
cGVjIHJlcXVpcmVzIHRoYXQgdGhlCi0gICAgLy8gdmFsdWUgd2UgeWllbGQgZm9yIGVhY2gga2V5
IGlzIHRoZSBmaXJzdCBkdXBsaWNhdGUgaW4gZm9yd2FyZHMKLSAgICAvLyBvcmRlci4KLSAgICBS
ZWZQdHI8SURCS2V5PiBsYXN0RHVwbGljYXRlS2V5OwotCi0gICAgYm9vbCBmb3J3YXJkID0gbV9j
dXJzb3JPcHRpb25zLmZvcndhcmQ7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlmIChuZXh0
U3RhdGUgPT0gU2VlaykgewotICAgICAgICAgICAgLy8gRklYTUU6IE9wdGltaXplIHNlZWtpbmcg
Zm9yIHJldmVyc2UgY3Vyc29ycyBhcyB3ZWxsLgotICAgICAgICAgICAgaWYgKGZpcnN0SXRlcmF0
aW9uICYmIGtleSAmJiBmb3J3YXJkKSB7Ci0gICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+c2Vl
ayhlbmNvZGVLZXkoKmtleSkpOwotICAgICAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9uID0gZmFs
c2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcndhcmQpCi0gICAgICAgICAgICAgICAgbV9p
dGVyYXRvci0+bmV4dCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1faXRl
cmF0b3ItPnByZXYoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXh0U3RhdGUgPSBT
ZWVrOyAvLyBmb3Igc3Vic2VxdWVudCBpdGVyYXRpb25zCi0KLSAgICAgICAgaWYgKCFtX2l0ZXJh
dG9yLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIGlmICghZm9yd2FyZCAmJiBsYXN0RHVwbGlj
YXRlS2V5LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB3YWxrIGZvcndh
cmQgYmVjYXVzZSB3ZSBoaXQgdGhlIGVuZCBvZgotICAgICAgICAgICAgICAgIC8vIHRoZSBkYXRh
LgotICAgICAgICAgICAgICAgIGZvcndhcmQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoaXNQYXN0Qm91bmRzKCkpIHsKLSAgICAgICAgICAgIGlmICghZm9y
d2FyZCAmJiBsYXN0RHVwbGljYXRlS2V5LmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byB3YWxrIGZvcndhcmQgYmVjYXVzZSBub3cgd2UncmUgYmV5b25kIHRoZQotICAgICAg
ICAgICAgICAgIC8vIGJvdW5kcyBkZWZpbmVkIGJ5IHRoZSBjdXJzb3IuCi0gICAgICAgICAgICAg
ICAgZm9yd2FyZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghaGF2ZUVudGVyZWRSYW5nZSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Ly8gVGhlIHJvdyBtYXkgbm90IGxvYWQgYmVjYXVzZSB0aGVyZSdzIGEgc3RhbGUgZW50cnkgaW4g
dGhlCi0gICAgICAgIC8vIGluZGV4LiBUaGlzIGlzIG5vdCBmYXRhbC4KLSAgICAgICAgaWYgKCFs
b2FkQ3VycmVudFJvdygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGtl
eSkgewotICAgICAgICAgICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9j
dXJyZW50S2V5LT5pc0xlc3NUaGFuKGtleSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoa2V5LT5pc0xlc3NU
aGFuKG1fY3VycmVudEtleS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy51
bmlxdWUpIHsKLQotICAgICAgICAgICAgaWYgKG1fY3VycmVudEtleS0+aXNFcXVhbChwcmV2aW91
c0tleS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYWJs
ZSB0byB3YWxrIGZvcndhcmQgYWxsIHRoZSB3YXkKLSAgICAgICAgICAgICAgICAvLyB0byB0aGUg
cHJldmlvdXMga2V5LgotICAgICAgICAgICAgICAgIEFTU0VSVCghbGFzdER1cGxpY2F0ZUtleS5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICghZm9yd2FyZCkgewotICAgICAgICAgICAgICAgIGlmICghbGFzdER1cGxpY2F0
ZUtleS5nZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBsYXN0RHVwbGljYXRlS2V5ID0gbV9j
dXJyZW50S2V5OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHdhbGsgZm9yd2FyZCBiZWNhdXNl
IHdlIGhpdCB0aGUgYm91bmRhcnkKLSAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIGtleSByYW5n
ZXMuCi0gICAgICAgICAgICAgICAgaWYgKCFsYXN0RHVwbGljYXRlS2V5LT5pc0VxdWFsKG1fY3Vy
cmVudEtleS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIEFTU0VSVCghbGFzdER1cGxpY2F0ZUtleS5nZXQoKSB8fCAoZm9y
d2FyZCAmJiBsYXN0RHVwbGljYXRlS2V5LT5pc0VxdWFsKG1fY3VycmVudEtleS5nZXQoKSkpKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJz
b3I6OmhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdAotewotICAgIGlmIChtX2N1cnNvck9wdGlvbnMu
Zm9yd2FyZCkgewotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4pCi0gICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JP
cHRpb25zLmxvd0tleSkgPiAwOwotCi0gICAgICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlzKG1f
aXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA+PSAwOwotICAgIH0KLSAg
ICBpZiAobV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuKQotICAgICAgICByZXR1cm4gY29tcGFyZUlu
ZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpIDwgMDsK
LQotICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNv
ck9wdGlvbnMuaGlnaEtleSkgPD0gMDsKLX0KLQotYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERC
OjpDdXJzb3I6OmlzUGFzdEJvdW5kcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY3Vyc29yT3B0aW9u
cy5mb3J3YXJkKSB7Ci0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuaGlnaE9wZW4pCi0gICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJz
b3JPcHRpb25zLmhpZ2hLZXkpID49IDA7Ci0gICAgICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlz
KG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPiAwOwotICAgIH0K
LQotICAgIGlmIChtX2N1cnNvck9wdGlvbnMubG93T3BlbikKLSAgICAgICAgcmV0dXJuIGNvbXBh
cmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpIDw9
IDA7Ci0gICAgcmV0dXJuIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vy
c29yT3B0aW9ucy5sb3dLZXkpIDwgMDsKLX0KLQotY2xhc3MgT2JqZWN0U3RvcmVLZXlDdXJzb3JJ
bXBsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvciB7CitjbGFzcyBPYmpl
Y3RTdG9yZUtleUN1cnNvckltcGwgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxE
QiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVLZXlDdXJzb3JJ
bXBsPiBjcmVhdGUoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQjo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbD4gY3JlYXRlKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IElEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREI6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbCh0cmFuc2FjdGlvbiwg
Y3Vyc29yT3B0aW9ucykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4gY2xvbmUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IGNsb25lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsKHRoaXMpKTsKICAg
ICB9CiAKLSAgICAvLyBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3IKKyAgICAvLyBJREJC
YWNraW5nU3RvcmVDdXJzb3JMZXZlbERCCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpIE9WRVJSSURFOwogCkBA
IC0xNjIyLDEzICsxNDYwLDEzIEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
T2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGNvbnN0IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKLSAgICAgICAgOiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3IodHJh
bnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpCisgICAgT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IElEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREI6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisgICAgICAgIDogSURCQmFj
a2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQih0cmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucykKICAgICB7
CiAgICAgfQogCiAgICAgT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsKGNvbnN0IE9iamVjdFN0b3Jl
S2V5Q3Vyc29ySW1wbCogb3RoZXIpCi0gICAgICAgIDogSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
Q3Vyc29yKG90aGVyKQorICAgICAgICA6IElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIob3Ro
ZXIpCiAgICAgewogICAgIH0KIH07CkBAIC0xNjYwLDE5ICsxNDk4LDE5IEBAIGJvb2wgT2JqZWN0
U3RvcmVLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWNsYXNzIE9iamVjdFN0b3JlQ3Vyc29ySW1wbCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmVM
ZXZlbERCOjpDdXJzb3IgeworY2xhc3MgT2JqZWN0U3RvcmVDdXJzb3JJbXBsIDogcHVibGljIElE
QkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE9iamVjdFN0b3JlQ3Vyc29ySW1wbD4gY3JlYXRlKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGNvbnN0IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcjo6Q3Vyc29yT3B0
aW9ucyYgY3Vyc29yT3B0aW9ucykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPYmplY3RTdG9yZUN1
cnNvckltcGw+IGNyZWF0ZShMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25z
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPYmplY3RTdG9yZUN1cnNvcklt
cGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3I+IGNsb25lKCkKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBjbG9uZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9iamVjdFN0b3JlQ3Vyc29ySW1w
bCh0aGlzKSk7CiAgICAgfQogCi0gICAgLy8gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Q3Vyc29y
CisgICAgLy8gSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jdXJy
ZW50VmFsdWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRSb3coKSBPVkVSUklERTsK
IApAQCAtMTY4MywxMyArMTUyMSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIE9iamVjdFN0b3JlQ3Vyc29ySW1wbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1
cnNvck9wdGlvbnMpCi0gICAgICAgIDogSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Q3Vyc29yKHRy
YW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKQorICAgIE9iamVjdFN0b3JlQ3Vyc29ySW1wbChMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBJREJCYWNraW5nU3RvcmVDdXJzb3JM
ZXZlbERCOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQorICAgICAgICA6IElEQkJhY2tp
bmdTdG9yZUN1cnNvckxldmVsREIodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpCiAgICAgewog
ICAgIH0KIAogICAgIE9iamVjdFN0b3JlQ3Vyc29ySW1wbChjb25zdCBPYmplY3RTdG9yZUN1cnNv
ckltcGwqIG90aGVyKQotICAgICAgICA6IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcihv
dGhlcikKKyAgICAgICAgOiBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCKG90aGVyKQogICAg
ICAgICAsIG1fY3VycmVudFZhbHVlKG90aGVyLT5tX2N1cnJlbnRWYWx1ZSkKICAgICB7CiAgICAg
fQpAQCAtMTcyNywxOSArMTU2NSwxOSBAQCBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9h
ZEN1cnJlbnRSb3coKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jbGFzcyBJbmRleEtleUN1cnNv
ckltcGwgRklOQUwgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Q3Vyc29yIHsKK2Ns
YXNzIEluZGV4S2V5Q3Vyc29ySW1wbCBGSU5BTCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmVDdXJz
b3JMZXZlbERCIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmRleEtleUN1cnNv
ckltcGw+IGNyZWF0ZShMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBJREJC
YWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5kZXhLZXlDdXJzb3JJbXBsPiBjcmVhdGUoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2
ZWxEQjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5kZXhLZXlDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRp
b25zKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tp
bmdTdG9yZUN1cnNvckludGVyZmFjZT4gY2xvbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodGhpcykpOwogICAgIH0KIAotICAgIC8vIElE
QkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcgorICAgIC8vIElEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREIKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNv
bnN0IE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fcHJpbWFyeUtleTsgfQogICAgIHZpcnR1YWwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmll
ciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0IE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAqbV9yZWNvcmRJZGVudGlmaWVyOyB9CkBAIC0xNzUyLDEzICsxNTkwLDEzIEBA
IHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSW5kZXhLZXlDdXJzb3JJbXBsKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IElEQkJhY2tpbmdTdG9yZUxldmVs
REI6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKLSAgICAgICAgOiBJREJC
YWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3IodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpCisg
ICAgSW5kZXhLZXlDdXJzb3JJbXBsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNv
bnN0IElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREI6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9w
dGlvbnMpCisgICAgICAgIDogSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQih0cmFuc2FjdGlv
biwgY3Vyc29yT3B0aW9ucykKICAgICB7CiAgICAgfQogCiAgICAgSW5kZXhLZXlDdXJzb3JJbXBs
KGNvbnN0IEluZGV4S2V5Q3Vyc29ySW1wbCogb3RoZXIpCi0gICAgICAgIDogSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6Q3Vyc29yKG90aGVyKQorICAgICAgICA6IElEQkJhY2tpbmdTdG9yZUN1cnNv
ckxldmVsREIob3RoZXIpCiAgICAgICAgICwgbV9wcmltYXJ5S2V5KG90aGVyLT5tX3ByaW1hcnlL
ZXkpCiAgICAgewogICAgIH0KQEAgLTE4MTgsMTkgKzE2NTYsMTkgQEAgYm9vbCBJbmRleEtleUN1
cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3Mg
SW5kZXhDdXJzb3JJbXBsIEZJTkFMIDogcHVibGljIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1
cnNvciB7CitjbGFzcyBJbmRleEN1cnNvckltcGwgRklOQUwgOiBwdWJsaWMgSURCQmFja2luZ1N0
b3JlQ3Vyc29yTGV2ZWxEQiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5kZXhD
dXJzb3JJbXBsPiBjcmVhdGUoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3Qg
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRp
b25zKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluZGV4Q3Vyc29ySW1wbD4gY3JlYXRlKExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IElEQkJhY2tpbmdTdG9yZUN1cnNvckxl
dmVsREI6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEluZGV4Q3Vyc29ySW1wbCh0cmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9u
cykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2U6OkN1cnNvcj4gY2xvbmUoKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmVDdXJzb3JJbnRlcmZhY2U+IGNsb25lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRoaXMpKTsKICAgICB9CiAKLSAgICAvLyBJREJCYWNr
aW5nU3RvcmVMZXZlbERCOjpDdXJzb3IKKyAgICAvLyBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZl
bERCCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3ByaW1hcnlL
ZXk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IElEQlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50
aWZpZXIoKSBjb25zdCBPVkVSUklERSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gKm1f
cmVjb3JkSWRlbnRpZmllcjsgfQpAQCAtMTg0MywxMyArMTY4MSwxMyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIEluZGV4Q3Vyc29ySW1wbChMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBjb25zdCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNv
ck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCi0gICAgICAgIDogSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6Q3Vyc29yKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKQorICAgIEluZGV4Q3Vyc29ySW1w
bChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBJREJCYWNraW5nU3RvcmVD
dXJzb3JMZXZlbERCOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQorICAgICAgICA6IElE
QkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpCiAg
ICAgewogICAgIH0KIAogICAgIEluZGV4Q3Vyc29ySW1wbChjb25zdCBJbmRleEN1cnNvckltcGwq
IG90aGVyKQotICAgICAgICA6IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcihvdGhlcikK
KyAgICAgICAgOiBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCKG90aGVyKQogICAgICAgICAs
IG1fcHJpbWFyeUtleShvdGhlci0+bV9wcmltYXJ5S2V5KQogICAgICAgICAsIG1fY3VycmVudFZh
bHVlKG90aGVyLT5tX2N1cnJlbnRWYWx1ZSkKICAgICAgICAgLCBtX3ByaW1hcnlMZXZlbERCS2V5
KG90aGVyLT5tX3ByaW1hcnlMZXZlbERCS2V5KQpAQCAtMTkxOCw3ICsxNzU2LDcgQEAgYm9vbCBJ
bmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJz
b3JPcHRpb25zKQorc3RhdGljIGJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQjo6Q3Vyc29yT3B0
aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBjdXJzb3JPcHRpb25zLmRhdGFiYXNlSWQgPSBk
YXRhYmFzZUlkOwogICAgIGN1cnNvck9wdGlvbnMub2JqZWN0U3RvcmVJZCA9IG9iamVjdFN0b3Jl
SWQ7CkBAIC0xOTU4LDcgKzE3OTYsNyBAQCBzdGF0aWMgYm9vbCBvYmplY3RTdG9yZUN1cnNvck9w
dGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBr
ZXkgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCwgYnV0IHdlIGVuZCB1cCB3aXRoIGEgc21hbGxlciBr
ZXksIHdlIHNob3VsZCBpbmNsdWRlIHRoYXQuCi0gICAgICAgICAgICBpZiAoY3Vyc29yT3B0aW9u
cy5oaWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKGZvdW5kSGlnaEtleSwgY3Vyc29yT3B0aW9u
cy5oaWdoS2V5KSA8IDApCisgICAgICAgICAgICBpZiAoY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAm
JiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpjb21wYXJlSW5kZXhLZXlzKGZvdW5kSGlnaEtleSwg
Y3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA8IDApCiAgICAgICAgICAgICAgICAgY3Vyc29yT3B0aW9u
cy5oaWdoT3BlbiA9IGZhbHNlOwogCiAgICAgICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hLZXkg
PSBmb3VuZEhpZ2hLZXk7CkBAIC0xOTY4LDcgKzE4MDYsNyBAQCBzdGF0aWMgYm9vbCBvYmplY3RT
dG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpbmRleEN1cnNvck9wdGlv
bnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2Uq
IHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdT
dG9yZUxldmVsREI6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKK3N0YXRp
YyBib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
IGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQjo6Q3Vyc29yT3B0aW9ucyYg
Y3Vyc29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGlmICghS2V5
UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKQEAg
LTIwMDksNyArMTg0Nyw3IEBAIHN0YXRpYyBib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhMZXZlbERC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBrZXkgc2hvdWxkIG5vdCBi
ZSBpbmNsdWRlZCwgYnV0IHdlIGVuZCB1cCB3aXRoIGEgc21hbGxlciBrZXksIHdlIHNob3VsZCBp
bmNsdWRlIHRoYXQuCi0gICAgICAgIGlmIChjdXJzb3JPcHRpb25zLmhpZ2hPcGVuICYmIGNvbXBh
cmVJbmRleEtleXMoZm91bmRIaWdoS2V5LCBjdXJzb3JPcHRpb25zLmhpZ2hLZXkpIDwgMCkKKyAg
ICAgICAgaWYgKGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gJiYgSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6Y29tcGFyZUluZGV4S2V5cyhmb3VuZEhpZ2hLZXksIGN1cnNvck9wdGlvbnMuaGlnaEtleSkg
PCAwKQogICAgICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOwogCiAgICAg
ICAgIGN1cnNvck9wdGlvbnMuaGlnaEtleSA9IGZvdW5kSGlnaEtleTsKQEAgLTIwMTcsMTIgKzE4
NTUsMTIgQEAgc3RhdGljIGJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2UKIAogICAgIHJldHVybiB0cnVlOwogfQot
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4gSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZTo6VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbiBkaXJlY3Rpb24pCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvcklu
dGVyZmFjZT4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5n
ZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogCiB7CiAgICAgTE9HKFN0
b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3Ii
KTsKLSAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tp
bmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5z
YWN0aW9uKTsKLSAgICBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpDdXJzb3I6OkN1cnNvck9wdGlv
bnMgY3Vyc29yT3B0aW9uczsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2Fj
dGlvbiA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6bGV2ZWxEQlRyYW5zYWN0
aW9uRnJvbSh0cmFuc2FjdGlvbik7CisgICAgSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQjo6
Q3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOwogICAgIGlmICghb2JqZWN0U3RvcmVDdXJzb3JP
cHRpb25zKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmFu
Z2UsIGRpcmVjdGlvbiwgY3Vyc29yT3B0aW9ucykpCiAgICAgICAgIHJldHVybiAwOwogICAgIFJl
ZlB0cjxPYmplY3RTdG9yZUN1cnNvckltcGw+IGN1cnNvciA9IE9iamVjdFN0b3JlQ3Vyc29ySW1w
bDo6Y3JlYXRlKGxldmVsREJUcmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucyk7CkBAIC0yMDMyLDEx
ICsxODcwLDExIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3I+
IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5PYmplY3RTCiAgICAgcmV0dXJuIGN1cnNvci5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJz
b3I+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5n
ZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQorUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IElEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5P
YmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYg
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9w
ZW5PYmplY3RTdG9yZUtleUN1cnNvciIpOwotICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxE
QlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6VHJhbnNhY3Rpb246OmxldmVs
REJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwotICAgIElEQkJhY2tpbmdTdG9yZUxldmVs
REI6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOworICAgIExldmVsREJUcmFu
c2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25M
ZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBJREJCYWNr
aW5nU3RvcmVDdXJzb3JMZXZlbERCOjpDdXJzb3JPcHRpb25zIGN1cnNvck9wdGlvbnM7CiAgICAg
aWYgKCFvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCByYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JPcHRpb25zKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbD4gY3Vy
c29yID0gT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsOjpjcmVhdGUobGV2ZWxEQlRyYW5zYWN0aW9u
LCBjdXJzb3JPcHRpb25zKTsKQEAgLTIwNDYsMTEgKzE4ODQsMTEgQEAgUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Bl
bk9iamVjdFMKICAgICByZXR1cm4gY3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6
b3BlbkluZGV4S2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbikKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5kZXhLZXlDdXJzb3IoSURC
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5JbmRl
eEtleUN1cnNvciIpOwotICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9u
ID0gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlv
bkZyb20odHJhbnNhY3Rpb24pOwotICAgIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcjo6
Q3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOworICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2
ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCOjpsZXZl
bERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKKyAgICBJREJCYWNraW5nU3RvcmVDdXJz
b3JMZXZlbERCOjpDdXJzb3JPcHRpb25zIGN1cnNvck9wdGlvbnM7CiAgICAgaWYgKCFpbmRleEN1
cnNvck9wdGlvbnMobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCByYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JPcHRpb25zKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgUmVmUHRyPEluZGV4S2V5Q3Vyc29ySW1wbD4gY3Vyc29yID0gSW5kZXhLZXlD
dXJzb3JJbXBsOjpjcmVhdGUobGV2ZWxEQlRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKTsKQEAg
LTIwNjAsMTEgKzE4OTgsMTEgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6
OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluZGV4S2UKICAgICByZXR1cm4g
Y3Vyc29yLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U6OkN1cnNvcj4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3BlbkluZGV4Q3Vyc29yKElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikK
K1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBJREJCYWNraW5nU3Rv
cmVMZXZlbERCOjpvcGVuSW5kZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRl
cmZhY2UmIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklE
QkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5JbmRleEN1cnNvciIpOwotICAgIExldmVsREJUcmFu
c2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6VHJh
bnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwotICAgIElEQkJh
Y2tpbmdTdG9yZUxldmVsREI6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOwor
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb25MZXZlbERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9u
KTsKKyAgICBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCOjpDdXJzb3JPcHRpb25zIGN1cnNv
ck9wdGlvbnM7CiAgICAgaWYgKCFpbmRleEN1cnNvck9wdGlvbnMobGV2ZWxEQlRyYW5zYWN0aW9u
LCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCByYW5nZSwgZGlyZWN0aW9uLCBj
dXJzb3JPcHRpb25zKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPEluZGV4Q3Vyc29y
SW1wbD4gY3Vyc29yID0gSW5kZXhDdXJzb3JJbXBsOjpjcmVhdGUobGV2ZWxEQlRyYW5zYWN0aW9u
LCBjdXJzb3JPcHRpb25zKTsKQEAgLTIwNzQsNDAgKzE5MTIsOSBAQCBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVu
SW5kZXhDdQogICAgIHJldHVybiBjdXJzb3IucmVsZWFzZSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbj4gSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6Y3JlYXRlQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKQotewotICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbj4obmV3
IElEQkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uKHRoaXMpKTsKLX0KLQotSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQjo6VHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uKElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZSogYmFja2luZ1N0b3JlKQotICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0
b3JlKQotewotfQotCi12b2lkIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpi
ZWdpbigpCi17Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVMZXZlbERCOjpU
cmFuc2FjdGlvbjo6YmVnaW4iKTsKLSAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb24pOwotICAgIG1f
dHJhbnNhY3Rpb24gPSBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PElEQkJhY2tpbmdTdG9yZUxldmVsREIqPihtX2JhY2tpbmdTdG9yZSktPm1fZGIuZ2V0KCkpOwot
fQotCi1ib29sIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OlRyYW5zYWN0aW9uOjpjb21taXQoKQot
ewotICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6VHJhbnNhY3Rp
b246OmNvbW1pdCIpOwotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKLSAgICBib29sIHJlc3Vs
dCA9IG1fdHJhbnNhY3Rpb24tPmNvbW1pdCgpOwotICAgIG1fdHJhbnNhY3Rpb24uY2xlYXIoKTsK
LSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgSU5URVJOQUxfV1JJVEVfRVJST1IoVHJhbnNhY3Rp
b25Db21taXQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6VHJhbnNhY3Rpb246OnJvbGxiYWNrKCkKK3N0ZDo6dW5pcXVlX3B0cjxJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZT4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y3Jl
YXRlQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6VHJhbnNhY3Rpb246OnJvbGxiYWNrIik7Ci0gICAgQVNTRVJU
KG1fdHJhbnNhY3Rpb24pOwotICAgIG1fdHJhbnNhY3Rpb24tPnJvbGxiYWNrKCk7Ci0gICAgbV90
cmFuc2FjdGlvbi5jbGVhcigpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2U+KG5ldyBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkxldmVsREIodGhpcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9y
ZUxldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5oCmluZGV4IGU3ODY1ZDUuLjllMTU2MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBvcGVuSW5NZW1vcnkoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBMZXZlbERCRmFjdG9yeSopOwogICAgIFdlYWtQdHI8SURC
QmFja2luZ1N0b3JlTGV2ZWxEQj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha0ZhY3Rv
cnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uPiBjcmVhdGVCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVCYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpOwogCiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCk7CiAKQEAgLTc2LDEw
NSArNzYsMzkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25z
dCBTdHJpbmcmIG5hbWUsIEJvb2xDYWxsYmFja0Z1bmN0aW9uKSBPVkVSUklERTsKIAogICAgIC8v
IE9sZC1zdHlsZSBzeW5jaHJvbm91cyBjYWxsYmFja3MKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
SURCRGF0YWJhc2VWZXJzaW9uKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24m
LCBpbnQ2NF90IHJvd0lkLCB1aW50NjRfdCB2ZXJzaW9uKSBPVkVSUklERTsKLQotICAgIHZpcnR1
YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5z
YWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCkgT1ZFUlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOwotCi0gICAgdmlydHVhbCBi
b29sIGdldFJlY29yZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFZl
Y3RvcjxjaGFyPiYgcmVjb3JkKSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdmly
dHVhbCBib29sIHB1dFJlY29yZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9u
JiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgSURCUmVjb3JkSWRlbnRpZmllciop
IE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JF
VFVSTjsKLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JF
VFVSTjsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QmIGN1cnJlbnROdW1iZXIpIE9WRVJSSURFIFdB
Uk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2aXJ0dWFsIGJvb2wgbWF5YmVVcGRhdGVLZXlHZW5lcmF0
b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdTdGF0
ZSwgYm9vbCBjaGVja0N1cnJlbnQpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2
aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYsIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiYgZm91bmRJREJS
ZWNvcmRJZGVudGlmaWVyKSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlv
biYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlx
dWUsIGJvb2wgaXNNdWx0aUVudHJ5KSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNh
Y3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkKSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdmlydHVhbCBib29s
IHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0
aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciopIE9WRVJS
SURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UHJpbWFyeUtleVZp
YUluZGV4KElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmLCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkgT1ZFUlJJREUgV0FSTl9VTlVTRURf
UkVUVVJOOwotICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQ
dHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5LCBib29sJiBleGlzdHMpIE9WRVJSSURFIFdBUk5f
VU5VU0VEX1JFVFVSTjsKLQotICAgIGNsYXNzIEN1cnNvciA6IHB1YmxpYyBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U6OkN1cnNvciB7Ci0gICAgcHVibGljOgotICAgICAgICBzdHJ1Y3QgQ3Vyc29y
T3B0aW9ucyB7Ci0gICAgICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7Ci0gICAgICAgICAgICBp
bnQ2NF90IG9iamVjdFN0b3JlSWQ7Ci0gICAgICAgICAgICBpbnQ2NF90IGluZGV4SWQ7Ci0gICAg
ICAgICAgICBWZWN0b3I8Y2hhcj4gbG93S2V5OwotICAgICAgICAgICAgYm9vbCBsb3dPcGVuOwot
ICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGhpZ2hLZXk7Ci0gICAgICAgICAgICBib29sIGhpZ2hP
cGVuOwotICAgICAgICAgICAgYm9vbCBmb3J3YXJkOwotICAgICAgICAgICAgYm9vbCB1bmlxdWU7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlID0g
U2VlaykgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhZHZhbmNlKHVuc2lnbmVkIGxv
bmcpIE9WRVJSSURFOwotICAgICAgICBib29sIGZpcnN0U2VlaygpOwotCi0gICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4gY2xvbmUoKSBP
VkVSUklERSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KLSAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCBPVkVSUklERSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgY29uc3QgSURCUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRp
ZmllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICptX3JlY29yZElkZW50aWZpZXI7IH0KLSAg
ICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3Vy
cmVudFJvdygpID0gMDsKLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgQ3Vyc29yKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlv
bnMpCi0gICAgICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgICAgICAg
ICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQotICAgICAgICAgICAgLCBtX3JlY29y
ZElkZW50aWZpZXIoSURCUmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotICAgICAgICBleHBsaWNpdCBDdXJzb3IoY29uc3QgSURCQmFja2luZ1N0b3JlTGV2
ZWxEQjo6Q3Vyc29yKiBvdGhlcik7Ci0KLSAgICAgICAgdmlydHVhbCBWZWN0b3I8Y2hhcj4gZW5j
b2RlS2V5KGNvbnN0IElEQktleSYpID0gMDsKLQotICAgICAgICBib29sIGlzUGFzdEJvdW5kcygp
IGNvbnN0OwotICAgICAgICBib29sIGhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdDsKLQotICAgICAg
ICBMZXZlbERCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247Ci0gICAgICAgIGNvbnN0IEN1cnNv
ck9wdGlvbnMgbV9jdXJzb3JPcHRpb25zOwotICAgICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9y
PiBtX2l0ZXJhdG9yOwotICAgICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7Ci0gICAg
ICAgIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiBtX3JlY29yZElkZW50aWZpZXI7Ci0gICAg
fTsKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1
cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6
VHJhbnNhY3Rpb24mLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29y
PiBvcGVuT2JqZWN0U3RvcmVDdXJzb3IoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2Fj
dGlvbiYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJLZXlSYW5nZSosIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3I+IG9wZW5J
bmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29y
PiBvcGVuSW5kZXhDdXJzb3IoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYs
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJS
SURFOwotCi0gICAgY2xhc3MgVHJhbnNhY3Rpb24gRklOQUwgOiBwdWJsaWMgSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNp
dCBUcmFuc2FjdGlvbihJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqKTsKLQotICAgICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW4oKTsKLSAgICAgICAgdmlydHVhbCBib29sIGNvbW1pdCgpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2soKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0VHJh
bnNhY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IDA7Ci0g
ICAgICAgICAgICBtX3RyYW5zYWN0aW9uID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbkZyb20oSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJREJCYWNraW5nU3RvcmVMZXZlbERCOjpUcmFuc2Fj
dGlvbiY+KHRyYW5zYWN0aW9uKS5tX3RyYW5zYWN0aW9uLmdldCgpOwotICAgICAgICB9Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIG1fYmFja2luZ1N0
b3JlOwotICAgICAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwot
ICAgIH07CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlVmVyc2lvbihJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3Qgcm93SWQsIHVpbnQ2NF90IHZl
cnNpb24pIE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRlbGV0
ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIFdBUk5fVU5VU0VE
X1JFVFVSTjsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJh
bnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+JiByZWNvcmQpIE9WRVJSSURFIFdBUk5f
VU5VU0VEX1JFVFVSTjsKKyAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwg
SURCUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICB2
aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbklu
dGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVS
UklERSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgdmlydHVhbCBib29sIGRlbGV0ZVJlY29yZChJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJ
REUgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHZpcnR1YWwgYm9vbCBnZXRLZXlHZW5lcmF0b3JD
dXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QmIGN1cnJlbnROdW1i
ZXIpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICB2aXJ0dWFsIGJvb2wgbWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KSBPVkVSUklERSBXQVJOX1VOVVNFRF9S
RVRVUk47CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUmVmUHRyPElEQlJlY29yZElkZW50aWZpZXI+
JiBmb3VuZElEQlJlY29yZElkZW50aWZpZXIpIE9WRVJSSURFIFdBUk5fVU5VU0VEX1JFVFVSTjsK
KworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkludGVyZmFjZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KSBPVkVSUklERSBXQVJOX1VOVVNFRF9SRVRV
Uk47CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHZpcnR1
YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25J
bnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBJREJSZWNvcmRJZGVudGlmaWVyKikg
T1ZFUlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHZpcnR1YWwgYm9vbCBnZXRQcmltYXJ5
S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXkmLCBSZWZQdHI8SURCS2V5PiYgcHJpbWFyeUtleSkgT1ZFUlJJREUgV0FSTl9VTlVT
RURfUkVUVVJOOworICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVm
UHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSwgYm9vbCYgZXhpc3RzKSBPVkVSUklERSBXQVJO
X1VOVVNFRF9SRVRVUk47CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
Q3Vyc29ySW50ZXJmYWNlPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25JbnRlcmZhY2UmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvcklu
dGVyZmFjZT4gb3Blbk9iamVjdFN0b3JlQ3Vyc29yKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
SW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+IG9w
ZW5JbmRleEtleUN1cnNvcihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURF
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+
IG9wZW5JbmRleEN1cnNvcihJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleVJhbmdlKiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBib29sIG1ha2VJbmRleFdyaXRlcnMoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiwgSURCS2V5JiBwcmltYXJ5S2V5LCBib29sIGtleVdhc0dlbmVyYXRlZCwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBWZWN0
b3I8UmVmUHRyPElEQkluZGV4V3JpdGVyPj4mIGluZGV4V3JpdGVycywgU3RyaW5nKiBlcnJvck1l
c3NhZ2UsIGJvb2wmIGNvbXBsZXRlZCkgT1ZFUlJJREUgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2VuZXJhdGVLZXkoSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVLZXlHZW5lcmF0b3IoSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSBPVkVSUklERTsK
IAorICAgIExldmVsREJEYXRhYmFzZSogbGV2ZWxEQkRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYi5n
ZXQoKTsgfQorCisgICAgc3RhdGljIGludCBjb21wYXJlSW5kZXhLZXlzKGNvbnN0IExldmVsREJT
bGljZSYsIGNvbnN0IExldmVsREJTbGljZSYpOworCiBwcm90ZWN0ZWQ6CiAgICAgSURCQmFja2lu
Z1N0b3JlTGV2ZWxEQihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2ZWxE
QkRhdGFiYXNlPiwgUGFzc093blB0cjxMZXZlbERCQ29tcGFyYXRvcj4pOwogCkBAIC0xODYsNyAr
MTIwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiwgYm9vbCYgc3VjY2VzcykgV0FSTl9V
TlVTRURfUkVUVVJOOwogICAgIGJvb2wgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJ
ZCwgSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXAqIG9iamVjdFN0b3JlcykgV0FS
Tl9VTlVTRURfUkVUVVJOOwogCi0gICAgYm9vbCBmaW5kS2V5SW5JbmRleChJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgVmVjdG9yPGNoYXI+
JiBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LCBib29sJiBmb3VuZCk7CisgICAgYm9vbCBmaW5kS2V5
SW5JbmRleChJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYsIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYsIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSwgYm9vbCYgZm91bmQp
OwogICAgIGJvb2wgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXAqKSBXQVJOX1VOVVNFRF9S
RVRVUk47CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bkxldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY4MTZjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2
ZWxEQi5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaCIKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxEQikKKworI2luY2x1ZGUgIkhp
c3RvZ3JhbVN1cHBvcnQuaCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmVMZXZlbERCLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6OklE
QkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQihJREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uq
IGJhY2tpbmdTdG9yZSkKKyAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKK3sKK30K
Kwordm9pZCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6OmJlZ2luKCkKK3sKKyAg
ICBMT0coU3RvcmFnZUFQSSwgIklEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQjo6YmVn
aW4iKTsKKyAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb24pOworICAgIG1fdHJhbnNhY3Rpb24gPSBM
ZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShyZWludGVycHJldF9jYXN0PElEQkJhY2tpbmdTdG9y
ZUxldmVsREIqPihtX2JhY2tpbmdTdG9yZSktPmxldmVsREJEYXRhYmFzZSgpKTsKK30KKworYm9v
bCBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6OmNvbW1pdCgpCit7CisgICAgTE9H
KFN0b3JhZ2VBUEksICJJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREI6OmNvbW1pdCIp
OworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKKyAgICBib29sIHJlc3VsdCA9IG1fdHJhbnNh
Y3Rpb24tPmNvbW1pdCgpOworICAgIG1fdHJhbnNhY3Rpb24uY2xlYXIoKTsKKyAgICBpZiAoIXJl
c3VsdCkKKyAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVkREIgVHJhbnNhY3Rpb25Db21taXQgRXJy
b3IiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIElEQkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uTGV2ZWxEQjo6cm9sbGJhY2soKQoreworICAgIExPRyhTdG9yYWdlQVBJLCAiSURCQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCOjpyb2xsYmFjayIpOworICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5yb2xsYmFjaygpOworICAgIG1fdHJhbnNh
Y3Rpb24uY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIFVTRShMRVZFTERCKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkxldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzIzMzNkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25M
ZXZlbERCLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCX2gKKyNkZWZpbmUgSURCQmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb25MZXZlbERCX2gKKworI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKyNpZiBVU0UoTEVWRUxEQikKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U7CisKK2NsYXNzIElEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiBGSU5BTCA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbkludGVyZmFjZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSURCQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb25MZXZlbERCKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSopOworCisgICAgdmly
dHVhbCB2b2lkIGJlZ2luKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbW1pdCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByb2xsYmFjaygpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZXNldFRyYW5zYWN0aW9uKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fYmFj
a2luZ1N0b3JlID0gMDsKKyAgICAgICAgbV90cmFuc2FjdGlvbiA9IDA7CisgICAgfQorCisgICAg
c3RhdGljIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uRnJvbShJREJCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbkludGVyZmFjZSYgdHJhbnNhY3Rpb24pCisgICAgeworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCJj4o
dHJhbnNhY3Rpb24pLm1fdHJhbnNhY3Rpb24uZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogbV9iYWNraW5nU3RvcmU7CisgICAgUmVmUHRyPExl
dmVsREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShMRVZFTERCKQorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggODYzNzRhMC4u
Nzk2YTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcApAQCAt
MTk3LDcgKzE5Nyw3IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om1heWJlQ3JlYXRlCiAgICAgcmV0dXJuIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmNyZWF0ZShzdGF0aWNfY2FzdDxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKj4oYmFja2VuZCksIHRyYW5zYWN0aW9uSWQsIGRhdGFiYXNlQ2FsbGJhY2tzLCBvYmpl
Y3RTdG9yZUlkcywgbW9kZSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZT4gSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpjcmVhdGVDdXJzb3JCYWNrZW5kKElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYgdHJhbnNhY3Rpb25CYWNrZW5kLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2U6OkN1cnNvciYgYmFja2luZ1N0b3JlQ3Vyc29yLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlw
ZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmNyZWF0ZUN1cnNvckJh
Y2tlbmQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiB0cmFuc2FjdGlvbkJhY2tlbmQs
IElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgYmFja2luZ1N0b3JlQ3Vyc29yLCBJbmRl
eGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIHJldHVy
biBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKCZiYWNraW5nU3RvcmVDdXJzb3IsIGN1cnNv
clR5cGUsIHRhc2tUeXBlLCAmdHJhbnNhY3Rpb25CYWNrZW5kLCBvYmplY3RTdG9yZUlkKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RmFjdG9yeUJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDNkNzQwNDguLmRhZDEw
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBtYXliZUNyZWF0ZVRyYW5zYWN0aW9uQmFja2VuZChJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UqLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBJbmRleGVkREI6OlRyYW5z
YWN0aW9uTW9kZSkgT1ZFUlJJREUgRklOQUw7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvciYsIElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlw
ZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2UmLCBJbmRleGVk
REI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gb3BlbkJhY2tpbmdTdG9yZShjb25zdCBTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgZGF0YURpcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzMzMmIwNS4uM2I0ZWIwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTczOCw2ICsxNzM4LDEyIEBACiAJCTUxNjYwQUI5MTgyOEJCODIwMDA3NENBRCAvKiBJ
REJGYWN0b3J5QmFja2VuZExldmVsREIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNjYwQUIzMTgyOEJCODIwMDA3NENBRCAvKiBJREJGYWN0b3J5QmFj
a2VuZExldmVsREIuaCAqLzsgfTsKIAkJNTE2NjBBQkExODI4QkI4MjAwMDc0Q0FEIC8qIElEQkxl
dmVsREJDb2RpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2NjBBQjQxODI4QkI4MjAwMDc0Q0FEIC8qIElEQkxldmVsREJDb2RpbmcuY3BwICov
OyB9OwogCQk1MTY2MEFCQjE4MjhCQjgyMDAwNzRDQUQgLyogSURCTGV2ZWxEQkNvZGluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQjUxODI4
QkI4MjAwMDc0Q0FEIC8qIElEQkxldmVsREJDb2RpbmcuaCAqLzsgfTsKKwkJNTE2NjBBQzAxODI4
Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQkMxODI4Qzg0NjAw
MDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuY3BwICovOyB9OworCQk1MTY2
MEFDMTE4MjhDODQ2MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQkQxODI4
Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaCAqLzsgfTsKKwkJ
NTE2NjBBQzIxODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2
ZWxEQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTY2MEFCRTE4MjhDODQ2MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZl
bERCLmNwcCAqLzsgfTsKKwkJNTE2NjBBQzMxODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2NjBBQkYxODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uTGV2ZWxEQi5oICovOyB9OworCQk1MTY2MEFDNjE4MjhDODYwMDAwNzRDQUQg
LyogSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY2MEFDNDE4MjhDODYwMDAwNzRDQUQgLyogSURC
QmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE2NjBBQzcxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY2MEFDNTE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTY5NTM5NzEzMjlBM0M4MDBCOTJEMDQgLyogSWNv
bkRhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTY5NTM5NTEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAg
Ki87IH07CiAJCTUxNjk1Mzk4MTMyOUEzQzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY5NTM5NjEz
MjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNkJCNzk0MENFOTFFNjgwMDUxMkY3OSAv
KiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1
c3RvbS5jcHAgKi87IH07CkBAIC04Mzg3LDYgKzgzOTMsMTIgQEAKIAkJNTE2NjBBQjMxODI4QkI4
MjAwMDc0Q0FEIC8qIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJREJGYWN0b3J5QmFja2VuZExldmVsREIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NjBBQjQxODI4QkI4MjAwMDc0Q0FEIC8qIElEQkxldmVsREJD
b2RpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCTGV2ZWxE
QkNvZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjYwQUI1MTgyOEJC
ODIwMDA3NENBRCAvKiBJREJMZXZlbERCQ29kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkxldmVsREJDb2RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE2NjBBQkMxODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVs
REIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQmFja2luZ1N0
b3JlQ3Vyc29yTGV2ZWxEQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjYw
QUJEMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVs
REIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NjBBQkUxODI4Qzg0NjAwMDc0
Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVs
REIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY2MEFCRjE4MjhDODQ2MDAw
NzRDQUQgLyogSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZlbERCLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY2MEFDNDE4MjhDODYwMDAwNzRDQUQg
LyogSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTY2MEFDNTE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE2OTUzOTUxMzI5QTNDODAwQjkyRDA0IC8qIEljb25EYXRhYmFz
ZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWNvbkRhdGFi
YXNlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjk1Mzk2MTMyOUEz
QzgwMEI5MkQwNCAvKiBJY29uRGF0YWJhc2VCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEljb25EYXRhYmFzZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyZWVXYWxrZXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwMzcsOCArMTUwNDksMTIgQEAKIAkJ
NTE2NjBBQUYxODI4QkI4MjAwMDc0Q0FEIC8qIGxldmVsZGIgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxNjYwQUJDMTgyOEM4NDYwMDA3NENBRCAvKiBJ
REJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmNwcCAqLywKKwkJCQk1MTY2MEFCRDE4MjhDODQ2
MDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlQ3Vyc29yTGV2ZWxEQi5oICovLAogCQkJCTUxNjYw
QUIwMTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcCAqLywKIAkJ
CQk1MTY2MEFCMTE4MjhCQjgyMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oICov
LAorCQkJCTUxNjYwQUJFMTgyOEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbkxldmVsREIuY3BwICovLAorCQkJCTUxNjYwQUJGMTgyOEM4NDYwMDA3NENBRCAvKiBJREJC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaCAqLywKIAkJCQk1MTY2MEFCMjE4MjhCQjgy
MDAwNzRDQUQgLyogSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcCAqLywKIAkJCQk1MTY2MEFC
MzE4MjhCQjgyMDAwNzRDQUQgLyogSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmggKi8sCiAJCQkJ
NTE2NjBBQjQxODI4QkI4MjAwMDc0Q0FEIC8qIElEQkxldmVsREJDb2RpbmcuY3BwICovLApAQCAt
MTY4NjgsNyArMTY4ODQsOSBAQAogCQkJCTUxRDcxOTZGMTgxMTA2REYwMDE2REM1MSAvKiBJREJB
bnkuY3BwICovLAogCQkJCTUxRDcxOTcwMTgxMTA2REYwMDE2REM1MSAvKiBJREJBbnkuaCAqLywK
IAkJCQk1MUQ3MTk3MTE4MTEwNkRGMDAxNkRDNTEgLyogSURCQW55LmlkbCAqLywKKwkJCQk1MTY2
MEFDNDE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlLmgg
Ki8sCiAJCQkJNTFFMzM3RjMxODEyNUFFMzAwMDdBMjQ2IC8qIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZS5oICovLAorCQkJCTUxNjYwQUM1MTgyOEM4NjAwMDA3NENBRCAvKiBJREJCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbkludGVyZmFjZS5oICovLAogCQkJCTUxRDcxOTc0MTgxMTA2REYwMDE2REM1
MSAvKiBJREJDYWxsYmFja3MuaCAqLywKIAkJCQk1MUQ3MTk3NTE4MTEwNkRGMDAxNkRDNTEgLyog
SURCQ3Vyc29yLmNwcCAqLywKIAkJCQk1MUQ3MTk3NjE4MTEwNkRGMDAxNkRDNTEgLyogSURCQ3Vy
c29yLmggKi8sCkBAIC0yMjIyNSw2ICsyMjI0Myw3IEBACiAJCQkJQTNCQjU5RjQxNDU3QTQwRDAw
QUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
M0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1NkQzNzM2MEFEQkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE2NjBBQzcxODI4Qzg2MDAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTEyRTM1RDExRkEzMzI4
MDAyNTgzNkEgLyogRG9jdW1lbnRMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlFRDJC
QTgzQzA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFMDU3RkE2MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjI2MzcsNiArMjI2NTYsNyBAQAogCQkJCUNEQUI2RDI5MTdD
N0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE4QTA2RDAxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM2MEQ5MEMwRDJBMTdDRTAwQjk5MThGIC8qIEV2ZW50RXhjZXB0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTY2MEFDNjE4MjhDODYwMDAwNzRDQUQgLyogSURCQmFja2luZ1N0
b3JlQ3Vyc29ySW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzY2NTAxMzE0NEZBQTQy
MDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQ3MTlFQzE4
MTEwNkUwMDAxNkRDNTEgLyogSURCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMDlB
NTMwQjA2NERCMzAwNUFCRDREIC8qIEV2ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MzIwOCw2ICsyMzIyOCw3IEBACiAJCQkJODk4Nzg1RjUxMjJFMUVBQzAwM0FBQkRBIC8qIEpTRmls
ZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2RDlEMjdCMTRFQUMwODYwMDkwRDc1
RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQwOUVCREMwMTZCN0YzOEUw
MENCQTNGQyAvKiBKU0ZvbnRMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjYwQUMzMTgy
OEM4NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEQTE1RUFDMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dhaW5Ob2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRTgwREE2NDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQzNDMsNiArMjQzNjQsNyBAQAogCQkJ
CTkzOTNFNjA1MTUxQTlBMTgwMDA2NkYwNiAvKiBTdHlsZUNhY2hlZEltYWdlU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MDM4QkUzMDE0NzJBRDIzMDA5NUUwRDEgLyogU3R5bGVDYWNoZWRTaGFk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwM0QwQ0FFMTRCNUIwQkEwMEYzMkY1NyAvKiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjYwQUMxMTgyOEM4
NDYwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MEUxOENEQTE2RjkyODU4MDBDNjU0ODYgLyogU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdGMEU4MUQ0QTcwMEIyNTk2NSAv
KiBTdHlsZURhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE3RkQwOUQ1
NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2NTUs
NiArMjU2NzcsNyBAQAogCQkJCUNFQ0FERkM4MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25D
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMkQ2N0IxMTUzNTY5MUYwMDU2M0QwRCAv
KiBEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQUYxOTk4MTUxM0QxMzEwMDhE
QjBDMyAvKiBEaXJlY3RDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2NjBBQzIx
ODI4Qzg0NjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNUY5RUY3MDEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdl
Q2FjaGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUZDN0E1MDE0NDRBRjVGMDBBNUQ4NjQg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUYyRDZD
MTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yNjcxOCw2ICsyNjc0MSw3IEBACiAJCQkJQjJGQTNENTIwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ5NkUz
OUQxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJGQTNENTQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE2NjBBQzAxODI4Qzg0NjAw
MDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjJGQTNENTYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0aW9uRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0Q1ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdD
aXJjbGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDVBMEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBhOWEyYjYyLi5hZTRkZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMt
MTEtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIElEQjog
U3BsaXQgQmFja2VuZCBDdXJzb3JzIGFuZCBUcmFuc2FjdGlvbiBpbnRvIHRoZWlyIG93biBmaWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNzg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5QmFja2VuZDo6Y3JlYXRlQ3Vyc29yQmFja2VuZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlC
YWNrZW5kLmg6CisKIDIwMTMtMTEtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IE1ha2UgTGF5ZXJUeXBlQ3VzdG9t
IHJlbW90ZS1ob3N0IENBTGF5ZXJzIGZyb20gdGhlIFdlYiBwcm9jZXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9y
eUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAppbmRleCA5ZmYzNTJkLi5jMTVjN2M2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCRmFjdG9yeUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gV2ViSURCRmFj
dG9yeUJhY2tlbmQ6Om1heWJlQ3JlYXRlVHJhbgogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IFdlYklEQkZhY3RvcnlCYWNrZW5kOjpjcmVh
dGVDdXJzb3JCYWNrZW5kKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSYsIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yJiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90KQorUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBXZWJJREJGYWN0b3J5QmFja2VuZDo6Y3JlYXRlQ3Vyc29y
QmFja2VuZChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UmLCBJREJCYWNraW5nU3RvcmVD
dXJzb3JJbnRlcmZhY2UmLCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKaW5k
ZXggZTRlMmZjZS4uYmZlNWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNr
ZW5kLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbWF5YmVDcmVhdGVUcmFu
c2FjdGlvbkJhY2tlbmQoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiwgaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2Fj
dGlvbk1vZGUpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUN1cnNvckJhY2tlbmQoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlSW50
ZXJmYWNlOjpDdXJzb3ImLCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUsIFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUN1cnNvckJhY2tlbmQoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlJiwgV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50
ZXJmYWNlJiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYklEQkZhY3RvcnlCYWNrZW5kKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlJZGVudGlmaWVyKTsK
</data>
<flag name="review"
          id="238878"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>