<?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>169433</bug_id>
          
          <creation_ts>2017-03-09 12:57:51 -0800</creation_ts>
          <short_desc>[Content Extensions] Introduce if-top-url and unless-top-url</short_desc>
          <delta_ts>2017-03-09 14:19:12 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285494</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-09 12:57:51 -0800</bug_when>
    <thetext>[Content Extensions] Introduce if-top-url and unless-top-url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285540</commentid>
    <comment_count>1</comment_count>
      <attachid>303976</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-09 13:28:14 -0800</bug_when>
    <thetext>Created attachment 303976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285542</commentid>
    <comment_count>2</comment_count>
      <attachid>303977</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-09 13:29:23 -0800</bug_when>
    <thetext>Created attachment 303977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285588</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-09 14:17:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/r213669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285593</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-09 14:19:12 -0800</bug_when>
    <thetext>rdar://problem/27548875</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303976</attachid>
            <date>2017-03-09 13:28:14 -0800</date>
            <delta_ts>2017-03-09 13:29:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169433-20170309132815.patch</filename>
            <type>text/plain</type>
            <size>68674</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE3LTAzLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gSW50cm9kdWNlIGlmLXRvcC11cmwgYW5kIHVubGVzcy10b3AtdXJsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiByMTg0MTE2IEkg
YWRkZWQgaWYtZG9tYWluIGFuZCB1bmxlc3MtZG9tYWluIHRvIGNvbnRyb2wgd2hldGhlciBhIHJ1
bGUgYXBwbGllcworICAgICAgICBiYXNlZCBvbiB0aGUgZG9tYWluIG9mIHRoZSBtYWluIGRvY3Vt
ZW50IFVSTC4gIEknbSBleHBhbmRpbmcgdGhpcyBieSBhZGRpbmcgaWYtdG9wLXVybAorICAgICAg
ICBhbmQgdW5sZXNzLXRvcC11cmwgdGhhdCBydW4gcmVndWxhciBleHByZXNzaW9ucyBvbiB0aGUg
ZW50aXJlIG1haW4gZG9jdW1lbnQgVVJMIHNvIHRoYXQKKyAgICAgICAgZXhhbXBsZS5jb20vdXNl
cjFjb250ZW50IGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20gZXhhbXBsZS5jb20vdXNlcjJjb250
ZW50LgorICAgICAgICBUbyBub3QgYWRkIHRvIHRoZSBudW1iZXIgb2YgcGFzc2VzIHdlIG1ha2Ug
b24gdGhlIFVSTHMgZm9yIGVhY2ggbG9hZCBhbmQgdG8gbWFpbnRhaW4gSlNPTgorICAgICAgICBi
YWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgSSd2ZSBtYWRlIGl0IHNvIHRoYXQgaWYtdG9wLXVybCBh
bmQgdW5sZXNzLXRvcC11cmwgY2FuIGJlIHVzZWQKKyAgICAgICAgaW5zdGVhZCBvZiBpZi1kb21h
aW4gYW5kIHVubGVzcy1kb21haW4gKHdoaWNoIGNvbnRpbnVlIHRvIHdvcmspIGJ1dCB0aGUgdHdv
IGNvbmRpdGlvbiB0eXBlcworICAgICAgICBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBzaW5jZSBy
dW5uaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgb24gdGhlIGVudGlyZSBtYWluIGRvY3VtZW50IFVS
TAorICAgICAgICBpcyBzdHJpY3RseSBtb3JlIHBvd2VyZnVsIHRoYW4gY2hlY2tpbmcgdGhlIGRv
bWFpbiBhbmQgc3ViZG9tYWlucy4KKyAgICAgICAgQXMgYSBtaW5vciBkZXRhaWwsIGNvbnRlbnQg
ZXh0ZW5zaW9uIHJlZ2V4ZXMgYXJlIGJ5IGRlZmF1bHQgQVNDSUktY2FzZS1pbnNlbnNpdGl2ZSwg
c28gSSd2ZQorICAgICAgICBkb25lIHRoZSBzYW1lIHdpdGggdG9wIFVSTCByZWdleGVzLCBhZGRp
bmcgdG9wLXVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUgdG8gbWlycm9yIHRoZSBleGlzdGlu
ZworICAgICAgICB1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIGlmIHRoZSBKU09OIGF1dGhv
ciBkZWNpZGVzIHRvIG1ha2UgcmVnZXhlcyBjYXNlIHNlbnNpdGl2ZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21w
aWxlZENvbnRlbnRFeHRlbnNpb24uaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbkNhY2hlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnRvcFVSTEFj
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb246OmNhY2hlZENvbmRpdGlvbmVkQWN0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5oOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6YWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlVG9CeXRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBj
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaDoKKyAgICAgICAgKiBj
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmNvbnRlbnRFeHRlbnNpb25FcnJvckNhdGVnb3J5KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaDoKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAg
ICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+VHJpZ2dlcik6CisgICAgICAgICog
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFj
dGlvbnNGb3JSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldEFwcGVuZEFjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6
aW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRXaXRoQ29u
ZGl0aW9ucyk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlci5oOgorCiAyMDE3LTAzLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gUmVuYW1lICJEb21haW4i
IHRvICJDb25kaXRpb24iIHdoZXJlIGFwcHJvcHJpYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNp
b24uaAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0
MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IERGQUJ5
dGVjb2RlKiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgREZBQnl0ZWNvZGUqIGNvbmRpdGlvbmVkRmlsdGVy
c0J5dGVjb2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdW5zaWduZWQgY29uZGl0aW9uZWRG
aWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBERkFC
eXRlY29kZSogdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dW5zaWduZWQgdG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgY29uc3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4oKSBjb25zdCA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAJKHJldmlzaW9u
IDIxMzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMzEgKzExOCwzMyBAQCB2b2lkIENvbnRl
bnRFeHRlbnNpb246OmNvbXBpbGVHbG9iYWxEaXNwCiAKIHZvaWQgQ29udGVudEV4dGVuc2lvbjo6
cG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVkKGNvbnN0IFVSTCYgdG9wVVJMKQogewotICAg
IFN0cmluZyBkb21haW4gPSB0b3BVUkwuaG9zdCgpOwotICAgIGlmIChtX2NhY2hlZERvbWFpbiAh
PSBkb21haW4pIHsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlciht
X2NvbXBpbGVkRXh0ZW5zaW9uLT5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZSgpLCBtX2NvbXBp
bGVkRXh0ZW5zaW9uLT5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBp
ZiAobV9jYWNoZWRUb3BVUkwgIT0gdG9wVVJMKSB7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXIgaW50ZXJwcmV0ZXIobV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVj
b2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPnRvcFVSTEZpbHRlcnNCeXRlY29kZUxlbmd0aCgp
KTsKICAgICAgICAgY29uc3QgdWludDE2X3QgYWxsTG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyA9
IExvYWRUeXBlTWFzayB8IFJlc291cmNlVHlwZU1hc2s7Ci0gICAgICAgIGF1dG8gZG9tYWluQWN0
aW9ucyA9IGludGVycHJldGVyLmludGVycHJldChkb21haW4udXRmOCgpLCBhbGxMb2FkVHlwZXNB
bmRSZXNvdXJjZVR5cGVzKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IG1fY29tcGlsZWRFeHRl
bnNpb24tPmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpID8gdG9wVVJMLmhvc3QoKSA6IHRv
cFVSTC5zdHJpbmcoKTsKKyAgICAgICAgYXV0byB0b3BVUkxBY3Rpb25zID0gaW50ZXJwcmV0ZXIu
aW50ZXJwcmV0KHN0cmluZy51dGY4KCksIGFsbExvYWRUeXBlc0FuZFJlc291cmNlVHlwZXMpOwog
ICAgICAgICAKLSAgICAgICAgbV9jYWNoZWRDb25kaXRpb25lZEFjdGlvbnMuY2xlYXIoKTsKLSAg
ICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBkb21haW5BY3Rpb25zKQotICAgICAgICAgICAg
bV9jYWNoZWRDb25kaXRpb25lZEFjdGlvbnMuYWRkKGFjdGlvbik7CisgICAgICAgIG1fY2FjaGVk
VG9wVVJMQWN0aW9ucy5jbGVhcigpOworICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IHRv
cFVSTEFjdGlvbnMpCisgICAgICAgICAgICBtX2NhY2hlZFRvcFVSTEFjdGlvbnMuYWRkKGFjdGlv
bik7CisgICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogaW50ZXJwcmV0ZXIuYWN0aW9uc01h
dGNoaW5nRXZlcnl0aGluZygpKQorICAgICAgICAgICAgbV9jYWNoZWRUb3BVUkxBY3Rpb25zLmFk
ZChhY3Rpb24pOwogICAgICAgICAKICAgICAgICAgbV9jYWNoZWRVbml2ZXJzYWxDb25kaXRpb25l
ZEFjdGlvbnMuY2xlYXIoKTsKICAgICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBtX3VuaXZl
cnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucykgewotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KChhY3Rpb24gJiB+SWZDb25kaXRpb25GbGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0
aW9uKSwgIlVuaXZlcnNhbCBhY3Rpb25zIHdpdGggZG9tYWlucyBzaG91bGQgbm90IGhhdmUgZmxh
Z3MuIik7Ci0gICAgICAgICAgICBpZiAoISEoYWN0aW9uICYgSWZDb25kaXRpb25GbGFnKSA9PSBt
X2NhY2hlZENvbmRpdGlvbmVkQWN0aW9ucy5jb250YWlucyhhY3Rpb24pKQorICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKChhY3Rpb24gJiB+SWZDb25kaXRpb25GbGFnKSA9PSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYWN0aW9uKSwgIlVuaXZlcnNhbCBhY3Rpb25zIHdpdGggY29uZGl0aW9ucyBz
aG91bGQgbm90IGhhdmUgZmxhZ3MuIik7CisgICAgICAgICAgICBpZiAoISEoYWN0aW9uICYgSWZD
b25kaXRpb25GbGFnKSA9PSBtX2NhY2hlZFRvcFVSTEFjdGlvbnMuY29udGFpbnMoYWN0aW9uKSkK
ICAgICAgICAgICAgICAgICBtX2NhY2hlZFVuaXZlcnNhbENvbmRpdGlvbmVkQWN0aW9ucy5hcHBl
bmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIG1f
Y2FjaGVkVW5pdmVyc2FsQ29uZGl0aW9uZWRBY3Rpb25zLnNocmlua1RvRml0KCk7Ci0gICAgICAg
IG1fY2FjaGVkRG9tYWluID0gZG9tYWluOworICAgICAgICBtX2NhY2hlZFRvcFVSTCA9IHRvcFVS
TDsKICAgICB9CiB9CiAKLWNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIENv
bnRlbnRFeHRlbnNpb246OmNhY2hlZENvbmRpdGlvbmVkQWN0aW9ucyhjb25zdCBVUkwmIHRvcFVS
TCkKK2NvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIENvbnRlbnRFeHRlbnNp
b246OnRvcFVSTEFjdGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpCiB7CiAgICAgcG9wdWxhdGVDb25k
aXRpb25DYWNoZUlmTmVlZGVkKHRvcFVSTCk7Ci0gICAgcmV0dXJuIG1fY2FjaGVkQ29uZGl0aW9u
ZWRBY3Rpb25zOworICAgIHJldHVybiBtX2NhY2hlZFRvcFVSTEFjdGlvbnM7CiB9CiAKIGNvbnN0
IFZlY3Rvcjx1aW50MzJfdD4mIENvbnRlbnRFeHRlbnNpb246OnVuaXZlcnNhbEFjdGlvbnNXaXRo
Q29uZGl0aW9ucyhjb25zdCBVUkwmIHRvcFVSTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDIxMzUz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgY29u
c3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uJiBjb21waWxlZEV4dGVuc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29tcGlsZWRFeHRlbnNpb24uZ2V0KCk7IH0KICAgICBTdHlsZVNoZWV0Q29udGVu
dHMqIGdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldCgpOwotICAgIGNvbnN0IERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGNhY2hlZENvbmRpdGlvbmVkQWN0aW9ucyhjb25zdCBVUkwm
IHRvcFVSTCk7CisgICAgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgdG9w
VVJMQWN0aW9ucyhjb25zdCBVUkwmIHRvcFVSTCk7CiAgICAgY29uc3QgVmVjdG9yPHVpbnQzMl90
PiYgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zKCkgeyByZXR1cm4gbV91bml2ZXJz
YWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnM7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDMyX3Q+
JiB1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpOwogCkBA
IC02MCw5ICs2MCw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
bV9nbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQ7CiAgICAgdm9pZCBjb21waWxlR2xvYmFsRGlz
cGxheU5vbmVTdHlsZVNoZWV0KCk7CiAKLSAgICBTdHJpbmcgbV9jYWNoZWREb21haW47CisgICAg
VVJMIG1fY2FjaGVkVG9wVVJMOwogICAgIHZvaWQgcG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVl
ZGVkKGNvbnN0IFVSTCYgdG9wVVJMKTsKLSAgICBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rp
b25zIG1fY2FjaGVkQ29uZGl0aW9uZWRBY3Rpb25zOworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXI6OkFjdGlvbnMgbV9jYWNoZWRUb3BVUkxBY3Rpb25zOwogICAgIFZlY3Rvcjx1aW50MzJfdD4g
bV9jYWNoZWRVbml2ZXJzYWxDb25kaXRpb25lZEFjdGlvbnM7CiAKICAgICBWZWN0b3I8dWludDMy
X3Q+IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIFZlY3Rvcjx1bnNpZ25lZD4gc2VyaWFsaXplQWN0
aW9ucwogCiB0eXBlZGVmIEhhc2hTZXQ8dWludDY0X3QsIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6
SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IFVuaXZl
cnNhbEFjdGlvblNldDsKIAotc3RhdGljIHZvaWQgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKERG
QSYgZGZhLCBjb25zdCBVbml2ZXJzYWxBY3Rpb25TZXQmIHVuaXZlcnNhbEFjdGlvbnMpCitzdGF0
aWMgdm9pZCBhZGRVbml2ZXJzYWxBY3Rpb25zVG9ERkEoREZBJiBkZmEsIFVuaXZlcnNhbEFjdGlv
blNldCYmIHVuaXZlcnNhbEFjdGlvbnMpCiB7CiAgICAgaWYgKHVuaXZlcnNhbEFjdGlvbnMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDUsNiArMjA1LDc4IEBAIHN0YXRpYyB2b2lk
IGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShERkEKICAgICByb290LnNldEFjdGlvbnMoYWN0aW9u
c1N0YXJ0LCBzdGF0aWNfY2FzdDx1aW50MTZfdD4oYWN0aW9uc0xlbmd0aCkpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorc3RhdGljIHZvaWQgY29tcGlsZVRvQnl0ZWNvZGUoQ29t
YmluZWRVUkxGaWx0ZXJzJiYgZmlsdGVycywgVW5pdmVyc2FsQWN0aW9uU2V0JiYgdW5pdmVyc2Fs
QWN0aW9ucywgRnVuY3RvciB3cml0ZUJ5dGVjb2RlVG9DbGllbnQpCit7CisgICAgLy8gU21hbGxl
ciBtYXhORkFTaXplcyByaXNrIGhpZ2ggY29tcGlsaW5nIGFuZCBpbnRlcnByZXRpbmcgdGltZXMg
ZnJvbSBoYXZpbmcgdG9vIG1hbnkgREZBcywKKyAgICAvLyBsYXJnZXIgbWF4TkZBU2l6ZXMgdXNl
IHRvbyBtdWNoIG1lbW9yeSB3aGVuIGNvbXBpbGluZy4KKyAgICBjb25zdCB1bnNpZ25lZCBtYXhO
RkFTaXplID0gNzUwMDA7CisKKyAgICBib29sIGZpcnN0TkZBU2VlbiA9IGZhbHNlOworCisgICAg
YXV0byBsb3dlckRGQVRvQnl0ZWNvZGUgPSBbJl0oREZBJiYgZGZhKQorICAgIHsKKyNpZiBDT05U
RU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKKyAgICAgICAgZGF0YUxvZ0Yo
IkRGQVxuIik7CisgICAgICAgIGRmYS5kZWJ1Z1ByaW50RG90KCk7CisjZW5kaWYKKyAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghZGZhLm5vZGVzW2RmYS5yb290XS5oYXNBY3Rpb25zKCksICJB
bGwgYWN0aW9ucyBvbiB0aGUgREZBIHJvb3Qgc2hvdWxkIGNvbWUgZnJvbSByZWd1bGFyIGV4cHJl
c3Npb25zIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iKTsKKworICAgICAgICBpZiAoIWZpcnN0TkZB
U2VlbikgeworICAgICAgICAgICAgLy8gUHV0IGFsbCB0aGUgdW5pdmVyc2FsIGFjdGlvbnMgb24g
dGhlIGZpcnN0IERGQS4KKyAgICAgICAgICAgIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShkZmEs
IFdURk1vdmUodW5pdmVyc2FsQWN0aW9ucykpOworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9y
PERGQUJ5dGVjb2RlPiBieXRlY29kZTsKKyAgICAgICAgREZBQnl0ZWNvZGVDb21waWxlciBjb21w
aWxlcihkZmEsIGJ5dGVjb2RlKTsKKyAgICAgICAgY29tcGlsZXIuY29tcGlsZSgpOworICAgICAg
ICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhieXRlY29kZSwgYnl0ZWNvZGUuY2FwYWNpdHkoKSAqIHNp
emVvZih1aW50OF90KSk7CisgICAgICAgIHdyaXRlQnl0ZWNvZGVUb0NsaWVudChXVEZNb3ZlKGJ5
dGVjb2RlKSk7CisgICAgICAgIGZpcnN0TkZBU2VlbiA9IHRydWU7CisgICAgfTsKKworICAgIGNv
bnN0IHVuc2lnbmVkIHNtYWxsREZBU2l6ZSA9IDEwMDsKKyAgICBERkFDb21iaW5lciBzbWFsbERG
QUNvbWJpbmVyOworICAgIGZpbHRlcnMucHJvY2Vzc05GQXMobWF4TkZBU2l6ZSwgWyZdKE5GQSYm
IG5mYSkgeworI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVHR0lORwor
ICAgICAgICBkYXRhTG9nRigiTkZBXG4iKTsKKyAgICAgICAgbmZhLmRlYnVnUHJpbnREb3QoKTsK
KyNlbmRpZgorICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhuZmEsIG5mYS5tZW1vcnlVc2Vk
KCkpOworICAgICAgICBERkEgZGZhID0gTkZBVG9ERkE6OmNvbnZlcnQobmZhKTsKKyAgICAgICAg
TE9HX0xBUkdFX1NUUlVDVFVSRVMoZGZhLCBkZmEubWVtb3J5VXNlZCgpKTsKKworICAgICAgICBp
ZiAoZGZhLmdyYXBoU2l6ZSgpIDwgc21hbGxERkFTaXplKQorICAgICAgICAgICAgc21hbGxERkFD
b21iaW5lci5hZGRERkEoV1RGTW92ZShkZmEpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBkZmEubWluaW1pemUoKTsKKyAgICAgICAgICAgIGxvd2VyREZBVG9CeXRlY29kZShXVEZNb3Zl
KGRmYSkpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzbWFsbERGQUNvbWJpbmVyLmNvbWJp
bmVERkFzKHNtYWxsREZBU2l6ZSwgWyZdKERGQSYmIGRmYSkgeworICAgICAgICBMT0dfTEFSR0Vf
U1RSVUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkpOworICAgICAgICBsb3dlckRGQVRvQnl0
ZWNvZGUoV1RGTW92ZShkZmEpKTsKKyAgICB9KTsKKworICAgIEFTU0VSVChmaWx0ZXJzLmlzRW1w
dHkoKSk7CisKKyAgICBpZiAoIWZpcnN0TkZBU2VlbikgeworICAgICAgICAvLyBPdXIgYnl0ZWNv
ZGUgaW50ZXJwcmV0ZXIgZXhwZWN0cyB0byBoYXZlIGF0IGxlYXN0IG9uZSBERkEsIHNvIGlmIHdl
IGhhdmVuJ3Qgc2VlbiBhbnkKKyAgICAgICAgLy8gY3JlYXRlIGEgZHVtbXkgb25lIGFuZCBhZGQg
YW55IHVuaXZlcnNhbCBhY3Rpb25zLgorCisgICAgICAgIERGQSBkdW1teURGQSA9IERGQTo6ZW1w
dHkoKTsKKyAgICAgICAgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKGR1bW15REZBLCBXVEZNb3Zl
KHVuaXZlcnNhbEFjdGlvbnMpKTsKKworICAgICAgICBWZWN0b3I8REZBQnl0ZWNvZGU+IGJ5dGVj
b2RlOworICAgICAgICBERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGR1bW15REZBLCBieXRl
Y29kZSk7CisgICAgICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKKyAgICAgICAgTE9HX0xBUkdFX1NU
UlVDVFVSRVMoYnl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkp
OworICAgICAgICB3cml0ZUJ5dGVjb2RlVG9DbGllbnQoV1RGTW92ZShieXRlY29kZSkpOworICAg
IH0KKyAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh1bml2ZXJzYWxBY3Rpb25zLCB1bml2ZXJzYWxB
Y3Rpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQpKTsKK30KKwogc3RkOjplcnJvcl9j
b2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNs
aWVudCwgU3RyaW5nJiYgcnVsZUpTT04pCiB7CiAgICAgYXV0byBydWxlTGlzdCA9IHBhcnNlUnVs
ZUxpc3QoV1RGTW92ZShydWxlSlNPTikpOwpAQCAtMjEyLDI1ICsyODQsNDUgQEAgc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RQogICAgICAgICByZXR1cm4gcnVsZUxpc3Qu
ZXJyb3IoKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+IHBhcnNlZFJ1bGVMaXN0
ID0gV1RGTW92ZShydWxlTGlzdC52YWx1ZSgpKTsKIAorICAgIGJvb2wgZG9tYWluQ29uZGl0aW9u
U2VlbiA9IGZhbHNlOworICAgIGJvb2wgdG9wVVJMQ29uZGl0aW9uU2VlbiA9IGZhbHNlOworICAg
IGZvciAoY29uc3QgYXV0byYgcnVsZSA6IHBhcnNlZFJ1bGVMaXN0KSB7CisgICAgICAgIHN3aXRj
aCAocnVsZS50cmlnZ2VyKCkuY29uZGl0aW9uVHlwZSkgeworICAgICAgICBjYXNlIFRyaWdnZXI6
OkNvbmRpdGlvblR5cGU6Ok5vbmU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
cmlnZ2VyOjpDb25kaXRpb25UeXBlOjpJZkRvbWFpbjoKKyAgICAgICAgY2FzZSBUcmlnZ2VyOjpD
b25kaXRpb25UeXBlOjpVbmxlc3NEb21haW46CisgICAgICAgICAgICBkb21haW5Db25kaXRpb25T
ZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyaWdnZXI6OkNv
bmRpdGlvblR5cGU6OklmVG9wVVJMOgorICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5
cGU6OlVubGVzc1RvcFVSTDoKKyAgICAgICAgICAgIHRvcFVSTENvbmRpdGlvblNlZW4gPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHRvcFVSTENv
bmRpdGlvblNlZW4gJiYgZG9tYWluQ29uZGl0aW9uU2VlbikKKyAgICAgICAgcmV0dXJuIENvbnRl
bnRFeHRlbnNpb25FcnJvcjo6SlNPTlRvcFVSTEFuZERvbWFpbkNvbmRpdGlvbnM7CisKICNpZiBD
T05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCiAgICAgZG91YmxlIHBhdHRl
cm5QYXJ0aXRpb25pbmdTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogI2Vu
ZGlmCiAKICAgICBWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7CiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBhY3Rpb25Mb2NhdGlvbnMgPSBzZXJpYWxpemVBY3Rpb25zKHBhcnNlZFJ1
bGVMaXN0LCBhY3Rpb25zKTsKLSAgICBjbGllbnQud3JpdGVBY3Rpb25zKFdURk1vdmUoYWN0aW9u
cykpOwogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGFjdGlvbnMsIGFjdGlvbnMuY2FwYWNpdHko
KSAqIHNpemVvZihTZXJpYWxpemVkQWN0aW9uQnl0ZSkpOwotICAgIGFjdGlvbnMuY2xlYXIoKTsK
KyAgICBjbGllbnQud3JpdGVBY3Rpb25zKFdURk1vdmUoYWN0aW9ucyksIGRvbWFpbkNvbmRpdGlv
blNlZW4pOwogCiAgICAgVW5pdmVyc2FsQWN0aW9uU2V0IHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0
Q29uZGl0aW9uczsKICAgICBVbml2ZXJzYWxBY3Rpb25TZXQgdW5pdmVyc2FsQWN0aW9uc1dpdGhD
b25kaXRpb25zOworICAgIFVuaXZlcnNhbEFjdGlvblNldCB1bml2ZXJzYWxUb3BVUkxBY3Rpb25z
OwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGRvbid0IGFsbCBuZWVkIHRvIGJlIGluIG1lbW9yeSBh
dCB0aGUgc2FtZSB0aW1lLgogICAgIENvbWJpbmVkVVJMRmlsdGVycyBmaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnM7CiAgICAgQ29tYmluZWRVUkxGaWx0ZXJzIGZpbHRlcnNXaXRoQ29uZGl0aW9uczsK
LSAgICBDb21iaW5lZFVSTEZpbHRlcnMgY29uZGl0aW9uRmlsdGVyczsKKyAgICBDb21iaW5lZFVS
TEZpbHRlcnMgdG9wVVJMRmlsdGVyczsKICAgICBVUkxGaWx0ZXJQYXJzZXIgZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25QYXJzZXIoZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zKTsKICAgICBVUkxGaWx0
ZXJQYXJzZXIgZmlsdGVyc1dpdGhDb25kaXRpb25QYXJzZXIoZmlsdGVyc1dpdGhDb25kaXRpb25z
KTsKKyAgICBVUkxGaWx0ZXJQYXJzZXIgdG9wVVJMRmlsdGVyUGFyc2VyKHRvcFVSTEZpbHRlcnMp
OwogICAgIAogICAgIGZvciAodW5zaWduZWQgcnVsZUluZGV4ID0gMDsgcnVsZUluZGV4IDwgcGFy
c2VkUnVsZUxpc3Quc2l6ZSgpOyArK3J1bGVJbmRleCkgewogICAgICAgICBjb25zdCBDb250ZW50
RXh0ZW5zaW9uUnVsZSYgY29udGVudEV4dGVuc2lvblJ1bGUgPSBwYXJzZWRSdWxlTGlzdFtydWxl
SW5kZXhdOwpAQCAtMjU2LDEwICszNDgsMTIgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxl
TGlzdChDb250ZW50RQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3dpdGNoICh0cmln
Z2VyLmNvbmRpdGlvblR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9u
VHlwZTo6SWZEb21haW46CisgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6
OklmVG9wVVJMOgogICAgICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgfD0gSWZD
b25kaXRpb25GbGFnOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBU
cmlnZ2VyOjpDb25kaXRpb25UeXBlOjpOb25lOgogICAgICAgICAgICAgY2FzZSBUcmlnZ2VyOjpD
b25kaXRpb25UeXBlOjpVbmxlc3NEb21haW46CisgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNv
bmRpdGlvblR5cGU6OlVubGVzc1RvcFVSTDoKICAgICAgICAgICAgICAgICBBU1NFUlQoIShhY3Rp
b25Mb2NhdGlvbkFuZEZsYWdzICYgSWZDb25kaXRpb25GbGFnKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yNzMsOCArMzY3LDIzIEBAIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEUKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiRXJy
b3Igd2hpbGUgcGFyc2luZyAlczogJXNcbiIsIHRyaWdnZXIudXJsRmlsdGVyLnV0ZjgoKS5kYXRh
KCksIFVSTEZpbHRlclBhcnNlcjo6c3RhdHVzU3RyaW5nKHN0YXR1cykudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWRSZWdleDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoY29uc3QgU3RyaW5nJiBj
b25kaXRpb24gOiB0cmlnZ2VyLmNvbmRpdGlvbnMpCi0gICAgICAgICAgICAgICAgY29uZGl0aW9u
RmlsdGVycy5hZGREb21haW4oYWN0aW9uTG9jYXRpb25BbmRGbGFncywgY29uZGl0aW9uKTsKKyAg
ICAgICAgICAgIGZvciAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24gOiB0cmlnZ2VyLmNvbmRpdGlv
bnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZG9tYWluQ29uZGl0aW9uU2VlbikgeworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIXRvcFVSTENvbmRpdGlvblNlZW4pOworICAgICAgICAgICAg
ICAgICAgICB0b3BVUkxGaWx0ZXJzLmFkZERvbWFpbihhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzLCBj
b25kaXRpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCh0b3BVUkxDb25kaXRpb25TZWVuKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0gdG9wVVJMRmlsdGVyUGFyc2VyLmFkZFBhdHRlcm4oY29uZGl0aW9uLCB0cmlnZ2VyLnRvcFVS
TENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpNYXRjaGVzRXZl
cnl0aGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsVG9wVVJMQWN0aW9u
cy5hZGQoYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0dXMgPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gVVJMRmlsdGVyUGFyc2VyOjpPaykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkVycm9yIHdoaWxlIHBhcnNpbmcgJXM6ICVz
XG4iLCBjb25kaXRpb24udXRmOCgpLmRhdGEoKSwgVVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJp
bmcoc3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXg7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgQVNTRVJUKHN0YXR1cyA9PSBVUkxGaWx0ZXJQYXJzZXI6Ok9rKTsKICAgICB9CkBAIC0y
OTAsMTgxICszOTksMjEgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50
RQogCiAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLCBm
aWx0ZXJzV2l0aG91dENvbmRpdGlvbnMubWVtb3J5VXNlZCgpKTsKICAgICBMT0dfTEFSR0VfU1RS
VUNUVVJFUyhmaWx0ZXJzV2l0aENvbmRpdGlvbnMsIGZpbHRlcnNXaXRoQ29uZGl0aW9ucy5tZW1v
cnlVc2VkKCkpOwotICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGNvbmRpdGlvbkZpbHRlcnMsIGNv
bmRpdGlvbkZpbHRlcnMubWVtb3J5VXNlZCgpKTsKKyAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh0
b3BVUkxGaWx0ZXJzLCB0b3BVUkxGaWx0ZXJzLm1lbW9yeVVzZWQoKSk7CiAKICNpZiBDT05URU5U
X0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCi0gICAgdW5zaWduZWQgbWFjaGluZXNX
aXRob3V0Q29uZGl0aW9uc0NvdW50ID0gMDsKLSAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlU2l6
ZUZvck1hY2hpbmVzV2l0aG91dENvbmRpdGlvbnMgPSAwOwotICAgIHVuc2lnbmVkIG1hY2hpbmVz
V2l0aENvbmRpdGlvbnNDb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgdG90YWxCeXRlY29kZVNpemVG
b3JNYWNoaW5lc1dpdGhDb25kaXRpb25zID0gMDsKICAgICBkb3VibGUgdG90YWxORkFUb0J5dGVD
b2RlQnVpbGRUaW1lU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICNlbmRp
ZgogCi0gICAgLy8gU21hbGxlciBtYXhORkFTaXplcyByaXNrIGhpZ2ggY29tcGlsaW5nIGFuZCBp
bnRlcnByZXRpbmcgdGltZXMgZnJvbSBoYXZpbmcgdG9vIG1hbnkgREZBcywKLSAgICAvLyBsYXJn
ZXIgbWF4TkZBU2l6ZXMgdXNlIHRvbyBtdWNoIG1lbW9yeSB3aGVuIGNvbXBpbGluZy4KLSAgICBj
b25zdCB1bnNpZ25lZCBtYXhORkFTaXplID0gNzUwMDA7Ci0gICAgCi0gICAgYm9vbCBmaXJzdE5G
QVdpdGhvdXRDb25kaXRpb25zU2VlbiA9IGZhbHNlOwotCi0gICAgYXV0byBsb3dlckZpbHRlcnNX
aXRob3V0Q29uZGl0aW9uc0RGQVRvQnl0ZWNvZGUgPSBbJl0oREZBJiYgZGZhKQotICAgIHsKLSNp
ZiBDT05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICAgICAgZGF0
YUxvZ0YoImZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucyBERkFcbiIpOwotICAgICAgICBkZmEuZGVi
dWdQcmludERvdCgpOwotI2VuZGlmCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWRmYS5u
b2Rlc1tkZmEucm9vdF0uaGFzQWN0aW9ucygpLCAiQWxsIGFjdGlvbnMgb24gdGhlIERGQSByb290
IHNob3VsZCBjb21lIGZyb20gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IG1hdGNoIGV2ZXJ5dGhp
bmcuIik7Ci0KLSAgICAgICAgaWYgKCFmaXJzdE5GQVdpdGhvdXRDb25kaXRpb25zU2Vlbikgewot
ICAgICAgICAgICAgLy8gUHV0IGFsbCB0aGUgdW5pdmVyc2FsIGFjdGlvbnMgb24gdGhlIGZpcnN0
IERGQS4KLSAgICAgICAgICAgIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShkZmEsIHVuaXZlcnNh
bEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucyk7Ci0gICAgICAgIH0KLQotICAgICAgICBWZWN0b3I8
REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwotICAgICAgICBERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBp
bGVyKGRmYSwgYnl0ZWNvZGUpOwotICAgICAgICBjb21waWxlci5jb21waWxlKCk7Ci0gICAgICAg
IExPR19MQVJHRV9TVFJVQ1RVUkVTKGJ5dGVjb2RlLCBieXRlY29kZS5jYXBhY2l0eSgpICogc2l6
ZW9mKHVpbnQ4X3QpKTsKLSNpZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JU
SU5HCi0gICAgICAgICsrbWFjaGluZXNXaXRob3V0Q29uZGl0aW9uc0NvdW50OwotICAgICAgICB0
b3RhbEJ5dGVjb2RlU2l6ZUZvck1hY2hpbmVzV2l0aG91dENvbmRpdGlvbnMgKz0gYnl0ZWNvZGUu
c2l6ZSgpOwotI2VuZGlmCisgICAgY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92ZShmaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnMpLCBXVEZNb3ZlKHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9u
cyksIFsmXShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIHsKICAgICAgICAgY2xpZW50
LndyaXRlRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkp
OwotCi0gICAgICAgIGZpcnN0TkZBV2l0aG91dENvbmRpdGlvbnNTZWVuID0gdHJ1ZTsKLSAgICB9
OwotCi0gICAgY29uc3QgdW5zaWduZWQgc21hbGxERkFTaXplID0gMTAwOwotICAgIERGQUNvbWJp
bmVyIHNtYWxsRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zREZBQ29tYmluZXI7Ci0gICAgZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zLnByb2Nlc3NORkFzKG1heE5GQVNpemUsIFsmXShORkEmJiBuZmEp
IHsKLSNpZiBDT05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICAg
ICAgZGF0YUxvZ0YoImZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucyBORkFcbiIpOwotICAgICAgICBu
ZmEuZGVidWdQcmludERvdCgpOwotI2VuZGlmCi0KLSAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVS
RVMobmZhLCBuZmEubWVtb3J5VXNlZCgpKTsKLSAgICAgICAgREZBIGRmYSA9IE5GQVRvREZBOjpj
b252ZXJ0KG5mYSk7Ci0gICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGRmYSwgZGZhLm1lbW9y
eVVzZWQoKSk7Ci0KLSAgICAgICAgaWYgKGRmYS5ncmFwaFNpemUoKSA8IHNtYWxsREZBU2l6ZSkK
LSAgICAgICAgICAgIHNtYWxsRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zREZBQ29tYmluZXIuYWRk
REZBKFdURk1vdmUoZGZhKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZGZhLm1pbmlt
aXplKCk7Ci0gICAgICAgICAgICBsb3dlckZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0RGQVRvQnl0
ZWNvZGUoV1RGTW92ZShkZmEpKTsKLSAgICAgICAgfQogICAgIH0pOwotCi0KLSAgICBzbWFsbEZp
bHRlcnNXaXRob3V0Q29uZGl0aW9uc0RGQUNvbWJpbmVyLmNvbWJpbmVERkFzKHNtYWxsREZBU2l6
ZSwgWyZdKERGQSYmIGRmYSkgewotICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEsIGRm
YS5tZW1vcnlVc2VkKCkpOwotICAgICAgICBsb3dlckZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0RG
QVRvQnl0ZWNvZGUoV1RGTW92ZShkZmEpKTsKLSAgICB9KTsKLQotICAgIEFTU0VSVChmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnMuaXNFbXB0eSgpKTsKLQotICAgIGlmICghZmlyc3RORkFXaXRob3V0
Q29uZGl0aW9uc1NlZW4pIHsKLSAgICAgICAgLy8gT3VyIGJ5dGVjb2RlIGludGVycHJldGVyIGV4
cGVjdHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgREZBLCBzbyBpZiB3ZSBoYXZlbid0IHNlZW4gYW55
Ci0gICAgICAgIC8vIGNyZWF0ZSBhIGR1bW15IG9uZSBhbmQgYWRkIGFueSB1bml2ZXJzYWwgYWN0
aW9ucy4KLQotICAgICAgICBERkEgZHVtbXlERkEgPSBERkE6OmVtcHR5KCk7Ci0gICAgICAgIGFk
ZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShkdW1teURGQSwgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRD
b25kaXRpb25zKTsKLQotICAgICAgICBWZWN0b3I8REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwotICAg
ICAgICBERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGR1bW15REZBLCBieXRlY29kZSk7Ci0g
ICAgICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMo
Ynl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkpOwotICAgICAg
ICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5
dGVjb2RlKSk7Ci0gICAgfQotICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHVuaXZlcnNhbEFjdGlv
bnNXaXRob3V0Q29uZGl0aW9ucywgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLmNh
cGFjaXR5KCkgKiBzaXplb2YodW5zaWduZWQpKTsKLSAgICB1bml2ZXJzYWxBY3Rpb25zV2l0aG91
dENvbmRpdGlvbnMuY2xlYXIoKTsKLSAgICAKLSAgICBib29sIGZpcnN0TkZBV2l0aENvbmRpdGlv
bnNTZWVuID0gZmFsc2U7Ci0gICAgYXV0byBsb3dlckZpbHRlcnNXaXRoQ29uZGl0aW9uc0RGQVRv
Qnl0ZWNvZGUgPSBbJl0oREZBJiYgZGZhKQotICAgIHsKLSAgICAgICAgaWYgKCFmaXJzdE5GQVdp
dGhDb25kaXRpb25zU2VlbikgewotICAgICAgICAgICAgLy8gUHV0IGFsbCB0aGUgdW5pdmVyc2Fs
IGFjdGlvbnMgb24gdGhlIGZpcnN0IERGQS4KLSAgICAgICAgICAgIGFkZFVuaXZlcnNhbEFjdGlv
bnNUb0RGQShkZmEsIHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucyk7Ci0gICAgICAgIH0K
LQotICAgICAgICBWZWN0b3I8REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwotICAgICAgICBERkFCeXRl
Y29kZUNvbXBpbGVyIGNvbXBpbGVyKGRmYSwgYnl0ZWNvZGUpOwotICAgICAgICBjb21waWxlci5j
b21waWxlKCk7Ci0gICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGJ5dGVjb2RlLCBieXRlY29k
ZS5jYXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ4X3QpKTsKLSNpZiBDT05URU5UX0VYVEVOU0lPTlNf
UEVSRk9STUFOQ0VfUkVQT1JUSU5HCi0gICAgICAgICsrbWFjaGluZXNXaXRoQ29uZGl0aW9uc0Nv
dW50OwotICAgICAgICB0b3RhbEJ5dGVjb2RlU2l6ZUZvck1hY2hpbmVzV2l0aENvbmRpdGlvbnMg
Kz0gYnl0ZWNvZGUuc2l6ZSgpOwotI2VuZGlmCisgICAgY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92
ZShmaWx0ZXJzV2l0aENvbmRpdGlvbnMpLCBXVEZNb3ZlKHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29u
ZGl0aW9ucyksIFsmXShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIHsKICAgICAgICAg
Y2xpZW50LndyaXRlRmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoV1RGTW92ZShieXRlY29k
ZSkpOwotCi0gICAgICAgIGZpcnN0TkZBV2l0aENvbmRpdGlvbnNTZWVuID0gdHJ1ZTsKLSAgICB9
OwotCi0gICAgREZBQ29tYmluZXIgc21hbGxGaWx0ZXJzV2l0aENvbmRpdGlvbnNERkFDb21iaW5l
cjsKLSAgICBmaWx0ZXJzV2l0aENvbmRpdGlvbnMucHJvY2Vzc05GQXMobWF4TkZBU2l6ZSwgWyZd
KE5GQSYmIG5mYSkgewotI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RFQlVH
R0lORwotICAgICAgICBkYXRhTG9nRigiZmlsdGVyc1dpdGhDb25kaXRpb25zIE5GQVxuIik7Ci0g
ICAgICAgIG5mYS5kZWJ1Z1ByaW50RG90KCk7Ci0jZW5kaWYKLSAgICAgICAgTE9HX0xBUkdFX1NU
UlVDVFVSRVMobmZhLCBuZmEubWVtb3J5VXNlZCgpKTsKLSAgICAgICAgREZBIGRmYSA9IE5GQVRv
REZBOjpjb252ZXJ0KG5mYSk7Ci0jaWYgQ09OVEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVf
REVCVUdHSU5HCi0gICAgICAgIGRhdGFMb2dGKCJmaWx0ZXJzV2l0aENvbmRpdGlvbnMgUFJFIE1J
TklNSVpJTkcgREZBXG4iKTsKLSAgICAgICAgZGZhLmRlYnVnUHJpbnREb3QoKTsKLSNlbmRpZgot
ICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWRmYS5ub2Rlc1tkZmEucm9vdF0uaGFzQWN0aW9u
cygpLCAiRmlsdGVycyB3aXRoIENvbmRpdGlvbnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nIGFyZSBu
b3QgYWxsb3dlZCByaWdodCBub3cuIik7Ci0KLSAgICAgICAgaWYgKGRmYS5ncmFwaFNpemUoKSA8
IHNtYWxsREZBU2l6ZSkKLSAgICAgICAgICAgIHNtYWxsRmlsdGVyc1dpdGhDb25kaXRpb25zREZB
Q29tYmluZXIuYWRkREZBKFdURk1vdmUoZGZhKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgZGZhLm1pbmltaXplKCk7Ci0gICAgICAgICAgICBsb3dlckZpbHRlcnNXaXRoQ29uZGl0aW9u
c0RGQVRvQnl0ZWNvZGUoV1RGTW92ZShkZmEpKTsKLSAgICAgICAgfQogICAgIH0pOwotICAgIHNt
YWxsRmlsdGVyc1dpdGhDb25kaXRpb25zREZBQ29tYmluZXIuY29tYmluZURGQXMoc21hbGxERkFT
aXplLCBbJl0oREZBJiYgZGZhKSB7Ci0gICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGRmYSwg
ZGZhLm1lbW9yeVVzZWQoKSk7Ci0gICAgICAgIGxvd2VyRmlsdGVyc1dpdGhDb25kaXRpb25zREZB
VG9CeXRlY29kZShXVEZNb3ZlKGRmYSkpOwotICAgIH0pOwotICAgIEFTU0VSVChmaWx0ZXJzV2l0
aENvbmRpdGlvbnMuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBpZiAoIWZpcnN0TkZBV2l0aENvbmRp
dGlvbnNTZWVuKSB7Ci0gICAgICAgIC8vIE91ciBieXRlY29kZSBpbnRlcnByZXRlciBleHBlY3Rz
IHRvIGhhdmUgYXQgbGVhc3Qgb25lIERGQSwgc28gaWYgd2UgaGF2ZW4ndCBzZWVuIGFueQotICAg
ICAgICAvLyBjcmVhdGUgYSBkdW1teSBvbmUgYW5kIGFkZCBhbnkgdW5pdmVyc2FsIGFjdGlvbnMu
Ci0KLSAgICAgICAgREZBIGR1bW15REZBID0gREZBOjplbXB0eSgpOwotICAgICAgICBhZGRVbml2
ZXJzYWxBY3Rpb25zVG9ERkEoZHVtbXlERkEsIHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9u
cyk7Ci0gICAgICAgIAotICAgICAgICBWZWN0b3I8REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwotICAg
ICAgICBERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGR1bW15REZBLCBieXRlY29kZSk7Ci0g
ICAgICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMo
Ynl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkpOwotICAgICAg
ICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVj
b2RlKSk7Ci0gICAgfQotICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHVuaXZlcnNhbEFjdGlvbnNX
aXRoQ29uZGl0aW9ucywgdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zLmNhcGFjaXR5KCkg
KiBzaXplb2YodW5zaWduZWQpKTsKLSAgICB1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMu
Y2xlYXIoKTsKLQotICAgIGNvbmRpdGlvbkZpbHRlcnMucHJvY2Vzc05GQXMobWF4TkZBU2l6ZSwg
WyZdKE5GQSYmIG5mYSkgewotI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RF
QlVHR0lORwotICAgICAgICBkYXRhTG9nRigiY29uZGl0aW9uRmlsdGVycyBORkFcbiIpOwotICAg
ICAgICBuZmEuZGVidWdQcmludERvdCgpOwotI2VuZGlmCi0gICAgICAgIExPR19MQVJHRV9TVFJV
Q1RVUkVTKG5mYSwgbmZhLm1lbW9yeVVzZWQoKSk7Ci0gICAgICAgIERGQSBkZmEgPSBORkFUb0RG
QTo6Y29udmVydChuZmEpOwotI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNISU5FX0RF
QlVHR0lORwotICAgICAgICBkYXRhTG9nRigiY29uZGl0aW9uRmlsdGVycyBERkFcbiIpOwotICAg
ICAgICBkZmEuZGVidWdQcmludERvdCgpOwotI2VuZGlmCi0gICAgICAgIExPR19MQVJHRV9TVFJV
Q1RVUkVTKGRmYSwgZGZhLm1lbW9yeVVzZWQoKSk7Ci0gICAgICAgIC8vIE1pbmltaXppbmcgdGhp
cyBERkEgd291bGQgbm90IGJlIGVmZmVjdGl2ZSBiZWNhdXNlIGFsbCBhY3Rpb25zIGFyZSB1bmlx
dWUKLSAgICAgICAgLy8gYW5kIGJlY2F1c2Ugb2YgdGhlIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgb2Yg
dGhpcyBERkEuCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWRmYS5ub2Rlc1tkZmEucm9v
dF0uaGFzQWN0aW9ucygpLCAiVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgY29uZGl0aW9ucyB0aGF0
IG1hdGNoIGV2ZXJ5dGhpbmcuIik7Ci0KLSAgICAgICAgVmVjdG9yPERGQUJ5dGVjb2RlPiBieXRl
Y29kZTsKLSAgICAgICAgREZBQnl0ZWNvZGVDb21waWxlciBjb21waWxlcihkZmEsIGJ5dGVjb2Rl
KTsKLSAgICAgICAgY29tcGlsZXIuY29tcGlsZSgpOwotICAgICAgICBMT0dfTEFSR0VfU1RSVUNU
VVJFUyhieXRlY29kZSwgYnl0ZWNvZGUuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50OF90KSk7Ci0g
ICAgICAgIGNsaWVudC53cml0ZUNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlKFdURk1vdmUoYnl0
ZWNvZGUpKTsKKyAgICBjb21waWxlVG9CeXRlY29kZShXVEZNb3ZlKHRvcFVSTEZpbHRlcnMpLCBX
VEZNb3ZlKHVuaXZlcnNhbFRvcFVSTEFjdGlvbnMpLCBbJl0oVmVjdG9yPERGQUJ5dGVjb2RlPiYm
IGJ5dGVjb2RlKSB7CisgICAgICAgIGNsaWVudC53cml0ZVRvcFVSTEZpbHRlcnNCeXRlY29kZShX
VEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfSk7Ci0gICAgQVNTRVJUKGNvbmRpdGlvbkZpbHRlcnMu
aXNFbXB0eSgpKTsKICAgICAKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQ
T1JUSU5HCiAgICAgZG91YmxlIHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZUVuZCA9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHJl
dmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMCArNDAsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCgp
IHsgfQogICAgIAogICAgIC8vIEZ1bmN0aW9ucyBzaG91bGQgYmUgY2FsbGVkIGluIHRoaXMgb3Jk
ZXIuIEFsbCBleGNlcHQgd3JpdGVBY3Rpb25zIGFuZCBmaW5hbGl6ZSBjYW4gYmUgY2FsbGVkIG11
bHRpcGxlIHRpbWVzLCB0aG91Z2guCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0
b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVB
Y3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiwgYm9vbCBjb25kaXRpb25zQXBw
bHlPbmx5VG9Eb21haW4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0
ZWNvZGU+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVDb25kaXRpb25lZEZpbHRlcnNC
eXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGZpbmFsaXplKCkgPSAwOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3Iu
Y3BwCShyZXZpc2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMyArNzgs
MTUgQEAgY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVucwogICAgICAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXg6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuICJJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIHJlZ3VsYXIgZXhwcmVzc2lv
bi4iOwogICAgICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlk
Q29uZGl0aW9uTGlzdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkludmFsaWQgbGlzdCBvZiBp
Zi1kb21haW4gb3IgdW5sZXNzLWRvbWFpbiBjb25kaXRpb25zLiI7CisgICAgICAgICAgICAgICAg
cmV0dXJuICJJbnZhbGlkIGxpc3Qgb2YgaWYtZG9tYWluLCB1bmxlc3MtZG9tYWluLCBpZi10b3At
dXJsLCBvciB1bmxlc3MtdG9wLXVybCBjb25kaXRpb25zLiI7CiAgICAgICAgICAgICBjYXNlIENv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlRvb01hbnlSdWxlczoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gIlRvbyBtYW55IHJ1bGVzIGluIEpTT04gYXJyYXkuIjsKICAgICAgICAgICAgIGNhc2Ug
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09ORG9tYWluTm90TG93ZXJDYXNlQVNDSUk6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuICJEb21haW5zIG11c3QgYmUgbG93ZXIgY2FzZSBBU0NJSS4gVXNl
IHB1bnljb2RlIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjdGVycy4iOwogICAgICAgICAgICAg
Y2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnM6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICJBIHRyaWdnZXIgY2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBj
b25kaXRpb24gKGlmLWRvbWFpbiBvciB1bmxlc3MtZG9tYWluKSI7CisgICAgICAgICAgICAgICAg
cmV0dXJuICJBIHRyaWdnZXIgY2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSBjb25kaXRpb24gKGlm
LWRvbWFpbiwgdW5sZXNzLWRvbWFpbiwgaWYtdG9wLXVybCwgb3IgdW5sZXNzLXRvcC11cmwpIjsK
KyAgICAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9wVVJMQW5kRG9t
YWluQ29uZGl0aW9uczoKKyAgICAgICAgICAgICAgICByZXR1cm4gIkEgbGlzdCBjYW5ub3QgaGF2
ZSBpZi1kb21haW4gYW5kIHVubGVzcy1kb21haW4gbWl4ZWQgd2l0aCBpZi10b3AtdXJsIGFuZCB1
bmxlc3MtdG9wLXVybCI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBzdGQ6
OnN0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgJKHJldmlzaW9uIDIxMzUzMykKKysrIFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgQ29udGVudEV4dGVuc2lv
bkVycm9yIHsKICAgICBKU09OSW52YWxpZENvbmRpdGlvbkxpc3QsCiAgICAgSlNPTkRvbWFpbk5v
dExvd2VyQ2FzZUFTQ0lJLAogICAgIEpTT05NdWx0aXBsZUNvbmRpdGlvbnMsCisgICAgSlNPTlRv
cFVSTEFuZERvbWFpbkNvbmRpdGlvbnMsCiAgICAgSlNPTlRvb01hbnlSdWxlcywKICAgICAKICAg
ICBKU09OSW52YWxpZEFjdGlvbiwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCShyZXZpc2lv
biAyMTM1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1MywxMCBAQCBzdGF0
aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlCiAgICAgaWYgKHVybEZpbHRlckNh
c2VWYWx1ZSAmJiAhc2NvcGUuZXhjZXB0aW9uKCkgJiYgdXJsRmlsdGVyQ2FzZVZhbHVlLmlzQm9v
bGVhbigpKQogICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9IHVybEZp
bHRlckNhc2VWYWx1ZS50b0Jvb2xlYW4oJmV4ZWMpOwogCisgICAgY29uc3QgSlNWYWx1ZSB0b3BV
UkxGaWx0ZXJDYXNlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmZXhlYywgInRvcC11cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIikpOwor
ICAgIGlmICh0b3BVUkxGaWx0ZXJDYXNlVmFsdWUgJiYgIXNjb3BlLmV4Y2VwdGlvbigpICYmIHRv
cFVSTEZpbHRlckNhc2VWYWx1ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgdHJpZ2dlci50b3BVUkxD
b25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUgPSB0b3BVUkxGaWx0ZXJDYXNlVmFsdWUudG9Cb29sZWFu
KCZleGVjKTsKKwogICAgIGNvbnN0IEpTVmFsdWUgcmVzb3VyY2VUeXBlVmFsdWUgPSB0cmlnZ2Vy
T2JqZWN0LmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgInJlc291cmNl
LXR5cGUiKSk7CiAgICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSAmJiByZXNvdXJjZVR5cGVWYWx1
ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGF1dG8gdHlwZUZsYWdzRXJyb3IgPSBnZXRUeXBlRmxh
Z3MoZXhlYywgcmVzb3VyY2VUeXBlVmFsdWUsIHRyaWdnZXIuZmxhZ3MsIHJlYWRSZXNvdXJjZVR5
cGUpOwpAQCAtMTk2LDYgKzIwMCwzNCBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjpl
cnJvcl9jb2RlCiAgICAgfSBlbHNlIGlmICghdW5sZXNzRG9tYWluVmFsdWUuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6
SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKIAorICAgIGNvbnN0IEpTVmFsdWUgaWZUb3BVUkxW
YWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZl
eGVjLCAiaWYtdG9wLXVybCIpKTsKKyAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpICYmIGlmVG9w
VVJMVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25UeXBl
ICE9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25z
KTsKKyAgICAgICAgYXV0byBpZlRvcFVSTCA9IGdldFN0cmluZ0xpc3QoZXhlYywgYXNPYmplY3Qo
aWZUb3BVUkxWYWx1ZSkpOworICAgICAgICBpZiAoIWlmVG9wVVJMLmhhc1ZhbHVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaWZUb3BVUkwuZXJyb3IoKSk7CisgICAgICAg
IHRyaWdnZXIuY29uZGl0aW9ucyA9IFdURk1vdmUoaWZUb3BVUkwudmFsdWUoKSk7CisgICAgICAg
IGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25M
aXN0KTsKKyAgICAgICAgdHJpZ2dlci5jb25kaXRpb25UeXBlID0gVHJpZ2dlcjo6Q29uZGl0aW9u
VHlwZTo6SWZUb3BVUkw7CisgICAgfSBlbHNlIGlmICghaWZUb3BVUkxWYWx1ZS5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9y
OjpKU09OSW52YWxpZENvbmRpdGlvbkxpc3QpOworCisgICAgY29uc3QgSlNWYWx1ZSB1bmxlc3NU
b3BVUkxWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZleGVjLCAidW5sZXNzLXRvcC11cmwiKSk7CisgICAgaWYgKCFzY29wZS5leGNlcHRpb24o
KSAmJiB1bmxlc3NUb3BVUkxWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGlmICh0cmlnZ2Vy
LmNvbmRpdGlvblR5cGUgIT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSkKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0
aXBsZUNvbmRpdGlvbnMpOworICAgICAgICBhdXRvIHVubGVzc1RvcFVSTCA9IGdldFN0cmluZ0xp
c3QoZXhlYywgYXNPYmplY3QodW5sZXNzVG9wVVJMVmFsdWUpKTsKKyAgICAgICAgaWYgKCF1bmxl
c3NUb3BVUkwuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh1
bmxlc3NUb3BVUkwuZXJyb3IoKSk7CisgICAgICAgIHRyaWdnZXIuY29uZGl0aW9ucyA9IFdURk1v
dmUodW5sZXNzVG9wVVJMLnZhbHVlKCkpOworICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25z
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0
ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdCk7CisgICAgICAgIHRyaWdnZXIu
Y29uZGl0aW9uVHlwZSA9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc1RvcFVSTDsKKyAg
ICB9IGVsc2UgaWYgKCF1bmxlc3NUb3BVUkxWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZENv
bmRpdGlvbkxpc3QpOworCiAgICAgcmV0dXJuIFdURk1vdmUodHJpZ2dlcik7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblJ1bGUuaAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
MTcgKzQzLDIzIEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiBzdHJ1Y3QgVHJpZ2dl
ciB7CiAgICAgU3RyaW5nIHVybEZpbHRlcjsKICAgICBib29sIHVybEZpbHRlcklzQ2FzZVNlbnNp
dGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCB0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUg
eyBmYWxzZSB9OwogICAgIFJlc291cmNlRmxhZ3MgZmxhZ3MgeyAwIH07CiAgICAgVmVjdG9yPFN0
cmluZz4gY29uZGl0aW9uczsKICAgICBlbnVtIGNsYXNzIENvbmRpdGlvblR5cGUgewogICAgICAg
ICBOb25lLAogICAgICAgICBJZkRvbWFpbiwKICAgICAgICAgVW5sZXNzRG9tYWluLAotICAgIH0g
Y29uZGl0aW9uVHlwZSB7IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKKyAgICAgICAgSWZUb3BVUkws
CisgICAgICAgIFVubGVzc1RvcFVSTCwKKyAgICB9OworICAgIENvbmRpdGlvblR5cGUgY29uZGl0
aW9uVHlwZSB7IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKIAogICAgIH5UcmlnZ2VyKCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb25kaXRpb25zLmlzRW1wdHkoKSA9PSAoY29uZGl0aW9uVHlwZSA9
PSBDb25kaXRpb25UeXBlOjpOb25lKSk7CisgICAgICAgIGlmICh0b3BVUkxDb25kaXRpb25Jc0Nh
c2VTZW5zaXRpdmUpCisgICAgICAgICAgICBBU1NFUlQoY29uZGl0aW9uVHlwZSA9PSBDb25kaXRp
b25UeXBlOjpJZlRvcFVSTCB8fCBjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6OlVubGVz
c1RvcFVSTCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNCYWNrZW5kLmNwcAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTYsNyArOTYsNyBAQCBWZWN0b3I8QWN0aW9uPiBDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ6CiAgICAgICAgIAogICAgICAgICBVUkwgdG9wVVJMID0gcmVzb3VyY2VMb2FkSW5mby5t
YWluRG9jdW1lbnRVUkw7CiAgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aENvbmRp
dGlvbnNJbnRlcnByZXRlcihjb21waWxlZEV4dGVuc2lvbi5maWx0ZXJzV2l0aENvbmRpdGlvbnNC
eXRlY29kZSgpLCBjb21waWxlZEV4dGVuc2lvbi5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZUxlbmd0aCgpKTsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyB3aXRo
Q29uZGl0aW9uc0FjdGlvbnMgPSB3aXRoQ29uZGl0aW9uc0ludGVycHJldGVyLmludGVycHJldFdp
dGhDb25kaXRpb25zKHVybENTdHJpbmcsIGZsYWdzLCBjb250ZW50RXh0ZW5zaW9uLT5jYWNoZWRD
b25kaXRpb25lZEFjdGlvbnModG9wVVJMKSk7CisgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXI6OkFjdGlvbnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aENvbmRpdGlvbnNJbnRlcnBy
ZXRlci5pbnRlcnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3RyaW5nLCBmbGFncywgY29udGVudEV4
dGVuc2lvbi0+dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0
IFNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zID0gY29tcGlsZWRFeHRlbnNpb24uYWN0aW9u
cygpOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBhY3Rpb25zTGVuZ3RoID0gY29tcGlsZWRFeHRl
bnNpb24uYWN0aW9uc0xlbmd0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAJKHJldmlz
aW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVj
b2RlSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQg
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0QXAKICAgICBBU1NFUlQoZ2V0SW5zdHJ1
Y3Rpb24obV9ieXRlY29kZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIpID09IERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbgogICAgICAgICB8fCBnZXRJbnN0cnVj
dGlvbihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcikgPT0gREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsKICAgICB1
aW50NjRfdCBhY3Rpb24gPSAoaWZDb25kaXRpb24gPyBJZkNvbmRpdGlvbkZsYWcgOiAwKSB8IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVjb2RlLCBtX2J5dGVj
b2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
KSkpOwotICAgIGlmICghbV9jb25kaXRpb25BY3Rpb25zIHx8IG1hdGNoZXNDb25kaXRpb24oYWN0
aW9uLCAqbV9jb25kaXRpb25BY3Rpb25zKSkKKyAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBt
YXRjaGVzQ29uZGl0aW9uKGFjdGlvbiwgKm1fdG9wVVJMQWN0aW9ucykpCiAgICAgICAgIGFjdGlv
bnMuYWRkKGFjdGlvbik7CiAgICAgCiAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5zdHJ1Y3Rpb25T
aXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24pOwpA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0
VGUKICAgICAKICAgICBpZiAobG9hZFR5cGVNYXRjaGVzICYmIHJlc291cmNlVHlwZU1hdGNoZXMp
IHsKICAgICAgICAgdWludDY0X3QgYWN0aW9uQW5kRmxhZ3MgPSAoaWZDb25kaXRpb24gPyBJZkNv
bmRpdGlvbkZsYWcgOiAwKSB8IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oZmxhZ3NUb0NoZWNrKSA8
PCAzMikgfCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZ2V0Qml0czx1aW50MzJfdD4obV9ieXRlY29k
ZSwgbV9ieXRlY29kZUxlbmd0aCwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbikgKyBzaXplb2YodWludDE2X3QpKSk7Ci0gICAgICAgIGlmICghbV9jb25kaXRp
b25BY3Rpb25zIHx8IG1hdGNoZXNDb25kaXRpb24oYWN0aW9uQW5kRmxhZ3MsICptX2NvbmRpdGlv
bkFjdGlvbnMpKQorICAgICAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0
aW9uKGFjdGlvbkFuZEZsYWdzLCAqbV90b3BVUkxBY3Rpb25zKSkKICAgICAgICAgICAgIGFjdGlv
bnMuYWRkKGFjdGlvbkFuZEZsYWdzKTsKICAgICB9CiAgICAgcHJvZ3JhbUNvdW50ZXIgKz0gaW5z
dHJ1Y3Rpb25TaXplV2l0aEFyZ3VtZW50cyhERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb24pOwpAQCAtMTY5LDEyICsxNjksMTIgQEAgREZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6QWN0aW9ucyBERkFCeXRlYwogICAgIHJldHVybiBhY3Rpb25zOwogfQogICAgIAot
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBERkFCeXRlY29kZUludGVycHJldGVyOjpp
bnRlcnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiB1cmxDU3RyaW5nLCB1aW50MTZf
dCBmbGFncywgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgY29uZGl0aW9u
QWN0aW9ucykKK0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgREZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6aW50ZXJwcmV0V2l0aENvbmRpdGlvbnMoY29uc3QgQ1N0cmluZyYgdXJsQ1N0cmlu
ZywgdWludDE2X3QgZmxhZ3MsIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMm
IHRvcFVSTEFjdGlvbnMpCiB7Ci0gICAgQVNTRVJUKCFtX2NvbmRpdGlvbkFjdGlvbnMpOwotICAg
IG1fY29uZGl0aW9uQWN0aW9ucyA9ICZjb25kaXRpb25BY3Rpb25zOworICAgIEFTU0VSVCghbV90
b3BVUkxBY3Rpb25zKTsKKyAgICBtX3RvcFVSTEFjdGlvbnMgPSAmdG9wVVJMQWN0aW9uczsKICAg
ICBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIGFjdGlvbnMgPSBpbnRlcnByZXQodXJs
Q1N0cmluZywgZmxhZ3MpOwotICAgIG1fY29uZGl0aW9uQWN0aW9ucyA9IG51bGxwdHI7CisgICAg
bV90b3BVUkxBY3Rpb25zID0gbnVsbHB0cjsKICAgICByZXR1cm4gYWN0aW9uczsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBERkFCeXRlY29kZSogbV9i
eXRlY29kZTsKICAgICBjb25zdCB1bnNpZ25lZCBtX2J5dGVjb2RlTGVuZ3RoOwotICAgIGNvbnN0
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMqIG1fY29uZGl0aW9uQWN0aW9ucyB7IG51
bGxwdHIgfTsKKyAgICBjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zKiBtX3Rv
cFVSTEFjdGlvbnMgeyBudWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAz
LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gSW50cm9kdWNlIGlmLXRvcC11cmwgYW5kIHVubGVzcy10
b3AtdXJsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5hbWUgY29uZGl0aW9uZWRGaWx0ZXJzIHRvIHRvcFVSTEZpbHRlcnMgdG8gcmVmbGVjdCB0aGUg
ZmFjdCB0aGF0IHRoZXkgYXJlIHRoZSBmaWx0ZXJzCisgICAgICAgIHRoYXQgYXJlIHJ1biBvbiB0
aGUgdG9wIFVSTCwgYW5kIHBvc3NpYmx5IGp1c3QgdGhlIGRvbWFpbiBvZiB0aGUgdG9wIHVybC4K
KyAgICAgICAgSSB3YXMgYSBiaXQgdG9vIGFnZ3Jlc3NpdmUgd2hlbiByZW5hbWluZyBkb21haW4q
IHRvIGNvbmRpdGlvbiogaW4gcjIxMzUzMy4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb246OmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6dG9wVVJMRmlsdGVyc0J5dGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjp0b3BVUkxGaWx0
ZXJzQnl0ZWNvZGVMZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRF
eHRlbnNpb246OmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjb25kaXRpb25lZEZpbHRlcnNC
eXRlY29kZUxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29u
dGVudEV4dGVuc2lvbi5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRl
bnNpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRl
bnNpb25EYXRhOjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwOgorICAgICAgICAo
QVBJOjplbmNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEpOgorICAgICAgICAoQVBJOjpkZWNv
ZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEpOgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmls
ZSk6CisgICAgICAgIChBUEk6OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OlVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmU6OmludmFsaWRhdGVDb250ZW50RXh0ZW5zaW9uVmVyc2lvbik6
CisgICAgICAgIChBUEk6OnVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNhdGVnb3J5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaDoK
KyAgICAgICAgSW5jcmVtZW50IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gYmVj
YXVzZSB3ZSBoYXZlIGNoYW5nZWQgdGhlIGZvcm1hdCBvZiB0aGUgYmluYXJ5IG9uIGRpc2suCisg
ICAgICAgIFdlIG9ubHkgYWRkZWQgNCBieXRlcywgYnV0IHRoYXQncyBiaW5hcnkgaW5jb21wYXRp
YmxlIGFuZCByZXF1aXJlcyByZS1jb21waWxpbmcgYW55IGV4aXN0aW5nIGNvbnRlbnQgZXh0ZW5z
aW9ucy4KKwogMjAxNy0wMy0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIFJlbmFtZSAiRG9tYWluIiB0
byAiQ29uZGl0aW9uIiB3aGVyZSBhcHByb3ByaWF0ZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAJKHJldmlzaW9u
IDIxMzUzMykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRl
bnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMSBAQCBXZWJDb21waWxlZENv
bnRlbnRFeHRlbnNpb246On5XZWJDb21waWxlCiB7CiB9CiAKK2Jvb2wgV2ViQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uOjpjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4oKSBjb25zdAoreworICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KG1fZGF0YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlU
b0RvbWFpbk9mZnNldCk7Cit9CisKIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZSogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpmaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSo+KG1fZGF0YS5kYXRhLT5k
YXRhKCkpICsgbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwpA
QCAtNjQsMTQgKzY5LDE0IEBAIHVuc2lnbmVkIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6
ZmkKICAgICByZXR1cm4gbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsK
IH0KIAotY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBXZWJD
b21waWxlZENvbnRlbnRFeHRlbnNpb246OmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlKCkgY29u
c3QKK2NvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uOjp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdAogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
REZBQnl0ZWNvZGUqPihtX2RhdGEuZGF0YS0+ZGF0YSgpKSArIG1fZGF0YS5jb25kaXRpb25lZEZp
bHRlcnNCeXRlY29kZU9mZnNldDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKj4obV9kYXRhLmRhdGEtPmRhdGEoKSkg
KyBtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwogfQogCi11bnNpZ25lZCBXZWJD
b21waWxlZENvbnRlbnRFeHRlbnNpb246OmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlTGVuZ3Ro
KCkgY29uc3QKK3Vuc2lnbmVkIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6dG9wVVJMRmls
dGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhLmNvbmRpdGlv
bmVkRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICByZXR1cm4gbV9kYXRhLnRvcFVSTEZpbHRlcnNC
eXRlY29kZVNpemU7CiB9CiAKIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJp
YWxpemVkQWN0aW9uQnl0ZSogV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjphY3Rpb25zKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRl
bnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
OCArNDcsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9u
c0J5dGVjb2RlTGVuZ3RoKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgp
IGNvbnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
TGVuZ3RoKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkRGQUJ5dGVjb2RlKiBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZpbmFs
OwotICAgIHVuc2lnbmVkIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3Qg
ZmluYWw7CisgICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2Rl
KiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsKKyAgICB1bnNpZ25lZCB0b3BV
UkxGaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNvbmRpdGlv
bnNBcHBseU9ubHlUb0RvbWFpbigpIGNvbnN0IGZpbmFsOwogICAgIAogICAgIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0ZSogYWN0aW9ucygpIGNv
bnN0IGZpbmFsOwogICAgIHVuc2lnbmVkIGFjdGlvbnNMZW5ndGgoKSBjb25zdCBmaW5hbDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uRGF0YS5jcHAJKHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsOCArNDQsOCBAQCB2b2lkIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGE6
OmVuCiAgICAgZW5jb2RlciA8PCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7
CiAgICAgZW5jb2RlciA8PCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldDsKICAg
ICBlbmNvZGVyIDw8IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKLSAgICBlbmNv
ZGVyIDw8IGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwotICAgIGVuY29kZXIgPDwg
Y29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIGVuY29kZXIgPDwgdG9wVVJMRmls
dGVyc0J5dGVjb2RlT2Zmc2V0OworICAgIGVuY29kZXIgPDwgdG9wVVJMRmlsdGVyc0J5dGVjb2Rl
U2l6ZTsKIH0KIAogYm9vbCBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhJiBj
b21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKQpAQCAtNjcsOSArNjcsOSBAQCBib29sIFdlYkNv
bXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGE6OmRlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuZmlsdGVy
c1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5jb25kaXRp
b25lZEZpbHRlcnNCeXRlY29kZU9mZnNldCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb21w
aWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLnRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVkQ29u
dGVudEV4dGVuc2lvbkRhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEudG9wVVJMRmls
dGVyc0J5dGVjb2RlU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0
cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5oCShyZXZpc2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MiwxNyArNDIsMTggQEAgY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
RGF0YSB7CiBwdWJsaWM6CiAgICAgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSgpID0g
ZGVmYXVsdDsKIAotICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEoUmVmUHRyPFNo
YXJlZE1lbW9yeT4mJiBkYXRhLCBOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEsIHVuc2lnbmVk
IGFjdGlvbnNPZmZzZXQsIHVuc2lnbmVkIGFjdGlvbnNTaXplLCB1bnNpZ25lZCBmaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGVTaXplLCB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZU9mZnNldCwgdW5zaWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplLCB1bnNp
Z25lZCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgY29uZGl0aW9u
ZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKQorICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEoUmVmUHRyPFNoYXJlZE1lbW9yeT4mJiBkYXRhLCBOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURh
dGEsIHVuc2lnbmVkIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCwgdW5zaWduZWQg
YWN0aW9uc09mZnNldCwgdW5zaWduZWQgYWN0aW9uc1NpemUsIHVuc2lnbmVkIGZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZVNpemUsIHVuc2lnbmVkIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0LCB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUsIHVuc2ln
bmVkIHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgdG9wVVJMRmlsdGVyc0J5
dGVjb2RlU2l6ZSkKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgICAgICwgZmls
ZURhdGEoZmlsZURhdGEpCisgICAgICAgICwgY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zm
c2V0KGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCkKICAgICAgICAgLCBhY3Rpb25z
T2Zmc2V0KGFjdGlvbnNPZmZzZXQpCiAgICAgICAgICwgYWN0aW9uc1NpemUoYWN0aW9uc1NpemUp
CiAgICAgICAgICwgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQoZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICwgZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2Rl
U2l6ZSkKICAgICAgICAgLCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldChmaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKICAgICAgICAgLCBmaWx0ZXJzV2l0aENv
bmRpdGlvbnNCeXRlY29kZVNpemUoZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQot
ICAgICAgICAsIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KGNvbmRpdGlvbmVkRmls
dGVyc0J5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2Rl
U2l6ZShjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUpCisgICAgICAgICwgdG9wVVJMRmls
dGVyc0J5dGVjb2RlT2Zmc2V0KHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCkKKyAgICAgICAg
LCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKHRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUpCiAg
ICAgewogICAgIH0KIApAQCAtNjEsMTQgKzYyLDE1IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IGRhdGE7CiAgICAgTmV0d29ya0NhY2hlOjpEYXRhIGZpbGVEYXRhOworICAg
IHVuc2lnbmVkIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCB7IDAgfTsKICAgICB1
bnNpZ25lZCBhY3Rpb25zT2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIGFjdGlvbnNTaXplIHsg
MCB9OwogICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0
IHsgMCB9OwogICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6
ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNl
dCB7IDAgfTsKICAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUg
eyAwIH07Ci0gICAgdW5zaWduZWQgY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQgeyAw
IH07Ci0gICAgdW5zaWduZWQgY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplIHsgMCB9Owor
ICAgIHVuc2lnbmVkIHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCB7IDAgfTsKKyAgICB1bnNp
Z25lZCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplIHsgMCB9OwogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCShyZXZpc2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSwxMyArNzksMTggQEAgc3RhdGljIFN0cmluZyBjb25zdHJ1Y3RlZFBhdGgo
Y29uc3QgU3RyaQogICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
YmFzZSwgIkNvbnRlbnRFeHRlbnNpb24tIiArIFdlYkNvcmU6OmVuY29kZUZvckZpbGVOYW1lKGlk
ZW50aWZpZXIpKTsKIH0KIAotY29uc3Qgc2l6ZV90IENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVy
U2l6ZSA9IHNpemVvZih1aW50MzJfdCkgKyA0ICogc2l6ZW9mKHVpbnQ2NF90KTsKKy8vIFRoZSBz
aXplIGFuZCBvZmZzZXQgb2YgdGhlIGRlbnNlbHkgcGFja2VkIGJ5dGVzIGluIHRoZSBmaWxlLCBu
b3Qgc2l6ZW9mIGFuZCBvZmZzZXRvZiwgd2hpY2ggd291bGQKKy8vIHJlcHJlc2VudCB0aGUgc2l6
ZSBhbmQgb2Zmc2V0IG9mIHRoZSBzdHJ1Y3R1cmUgaW4gbWVtb3J5LCBwb3NzaWJseSB3aXRoIGNv
bXBpbGVyLWFkZGVkIHBhZGRpbmcuCitjb25zdCBzaXplX3QgQ29udGVudEV4dGVuc2lvbkZpbGVI
ZWFkZXJTaXplID0gMiAqIHNpemVvZih1aW50MzJfdCkgKyA0ICogc2l6ZW9mKHVpbnQ2NF90KTsK
K2NvbnN0IHNpemVfdCBDb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQgPSBzaXplb2Yo
dWludDMyX3QpICsgNCAqIHNpemVvZih1aW50NjRfdCk7CisKIHN0cnVjdCBDb250ZW50RXh0ZW5z
aW9uTWV0YURhdGEgewogICAgIHVpbnQzMl90IHZlcnNpb24geyBVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlOjpDdXJyZW50Q29udGVudEV4dGVuc2lvbkZpbGVWZXJzaW9uIH07CiAgICAgdWludDY0
X3QgYWN0aW9uc1NpemUgeyAwIH07CiAgICAgdWludDY0X3QgZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIHVpbnQ2NF90IGZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlU2l6ZSB7IDAgfTsKICAgICB1aW50NjRfdCBjb25kaXRpb25lZEZpbHRlcnNCeXRl
Y29kZVNpemUgeyAwIH07CisgICAgdWludDMyX3QgY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWlu
IHsgZmFsc2UgfTsKICAgICAKICAgICBzaXplX3QgZmlsZVNpemUoKSBjb25zdAogICAgIHsKQEAg
LTEwNiw2ICsxMTEsNyBAQCBzdGF0aWMgRGF0YSBlbmNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURh
CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZVNpemU7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRl
Y29kZVNpemU7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRl
Y29kZVNpemU7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9E
b21haW47CiAKICAgICBBU1NFUlQoZW5jb2Rlci5idWZmZXJTaXplKCkgPT0gQ29udGVudEV4dGVu
c2lvbkZpbGVIZWFkZXJTaXplKTsKICAgICByZXR1cm4gRGF0YShlbmNvZGVyLmJ1ZmZlcigpLCBl
bmNvZGVyLmJ1ZmZlclNpemUoKSk7CkBAIC0xMzEsNiArMTM3LDggQEAgc3RhdGljIGJvb2wgZGVj
b2RlQ29udGVudEV4dGVuc2lvbk1ldGFEYQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVj
b2RlU2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9KTsKQEAgLTE3Nyw5ICsxODUsMTAgQEAgc3RhdGljIHN0ZDo6ZXJyb3Jf
Y29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAgICAgICAgQVNTRVJUKCFtZXRhRGF0YS5maWx0
ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUpOwogICAgICAgICAgICAgQVNTRVJUKCFt
ZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpOwogICAgICAgICAgICAg
QVNTRVJUKCFtZXRhRGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUpOworICAgICAg
ICAgICAgQVNTRVJUKCFtZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQorICAg
ICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPERG
QUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4pOwogICAgICAgICAgICAg
QVNTRVJUKCFtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOwpAQCAtMTg3LDM1ICsx
OTYsMzcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAg
ICAgICAgd3JpdGVUb0ZpbGUoRGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25k
aXRpb25zQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQor
ICAgICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPERG
QUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBtX2Zp
bHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKICAg
ICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXpl
KCkpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCB3cml0ZUNvbmRpdGlvbmVk
RmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCB3cml0ZVRvcFVSTEZpbHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNv
ZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fY29uZGl0aW9u
RmlsdGVyc0J5dGVjb2RlV3JpdHRlbiArPSBieXRlY29kZS5zaXplKCk7CiAgICAgICAgICAgICB3
cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8U2VyaWFsaXplZEFjdGlv
bkJ5dGU+JiYgYWN0aW9ucykgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVj
dG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMsIGJvb2wgY29uZGl0aW9uc0FwcGx5
T25seVRvRG9tYWluKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VS
VCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBB
U1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBB
U1NFUlQoIW1fYWN0aW9uc1dyaXR0ZW4pOwogICAgICAgICAgICAgbV9hY3Rpb25zV3JpdHRlbiAr
PSBhY3Rpb25zLnNpemUoKTsKKyAgICAgICAgICAgIG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9t
YWluID0gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAgICAgICAgd3JpdGVUb0Zp
bGUoRGF0YShhY3Rpb25zLmRhdGEoKSwgYWN0aW9ucy5zaXplKCkpKTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgdm9pZCBmaW5hbGl6ZSgpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZmlu
YWxpemUoKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBtX21ldGFEYXRhLmFjdGlvbnNT
aXplID0gbV9hY3Rpb25zV3JpdHRlbjsKICAgICAgICAgICAgIG1fbWV0YURhdGEuZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZVdyaXR0ZW47CiAgICAgICAgICAgICBtX21ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0
aW9uc0J5dGVjb2RlU2l6ZSA9IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW47
CiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSA9
IG1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbjsKKyAgICAgICAgICAgIG1fbWV0YURh
dGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluID0gbV9jb25kaXRpb25zQXBwbHlPbmx5VG9E
b21haW47CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERhdGEgaGVhZGVyID0gZW5jb2RlQ29u
dGVudEV4dGVuc2lvbk1ldGFEYXRhKG1fbWV0YURhdGEpOwogICAgICAgICAgICAgaWYgKCFtX2Zp
bGVFcnJvciAmJiBXZWJDb3JlOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6
RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewpAQCAtMjQyLDYgKzI1
Myw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKICAgICAgICAg
c2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4geyAwIH07CiAgICAg
ICAgIHNpemVfdCBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4geyAwIH07CiAgICAg
ICAgIHNpemVfdCBtX2FjdGlvbnNXcml0dGVuIHsgMCB9OworICAgICAgICBib29sIG1fY29uZGl0
aW9uc0FwcGx5T25seVRvRG9tYWluIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2ZpbGVFcnJv
ciB7IGZhbHNlIH07CiAgICAgfTsKIApAQCAtMjg1LDYgKzI5Nyw3IEBAIHN0YXRpYyBSZWZQdHI8
QVBJOjpVc2VyQ29udGVudEV4dGVuc2lvbj4KICAgICBhdXRvIGNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbkRhdGEgPSBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEoCiAgICAg
ICAgIFdURk1vdmUoc2hhcmVkTWVtb3J5KSwKICAgICAgICAgZmlsZURhdGEsCisgICAgICAgIENv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCwKICAgICAgICAgQ29udGVudEV4dGVuc2lv
bkZpbGVIZWFkZXJTaXplLAogICAgICAgICBtZXRhRGF0YS5hY3Rpb25zU2l6ZSwKICAgICAgICAg
Q29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplCkBAIC0zODMsNyArMzk2LDcgQEAgdm9pZCBV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjppbnZhbGlkYQogICAgIGF1dG8gZmlsZSA9IFdlYkNv
cmU6Om9wZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciksIFdl
YkNvcmU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIENvbnRlbnRFeHRlbnNpb25N
ZXRhRGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDB9OworICAgIENvbnRlbnRFeHRl
bnNpb25NZXRhRGF0YSBpbnZhbGlkSGVhZGVyOwogICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gV2Vi
Q29yZTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmlu
dmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIEFTU0VSVF9VTlVTRUQo
Ynl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAg
ICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZSk7CkBAIC0zOTIsMTIgKzQwNSwxMiBAQCB2b2lkIFVz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmludmFsaWRhCiBjb25zdCBzdGQ6OmVycm9yX2NhdGVn
b3J5JiB1c2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JDYXRlZ29yeSgpCiB7CiAgICAgY2xh
c3MgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yQ2F0ZWdvcnkgOiBwdWJsaWMgc3RkOjpl
cnJvcl9jYXRlZ29yeSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCBub2V4Y2Vw
dCBvdmVycmlkZQorICAgICAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qgbm9leGNlcHQgZmlu
YWwKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICJ1c2VyIGNvbnRlbnQgZXh0ZW5zaW9u
IHN0b3JlIjsKICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UoaW50IGVy
cm9yQ29kZSkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZShpbnQg
ZXJyb3JDb2RlKSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yPihlcnJvckNvZGUpKSB7
CiAgICAgICAgICAgICBjYXNlIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yOjpMb29r
dXBGYWlsZWQ6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAkocmV2aXNpb24gMjEzNTMzKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIAogICAg
IC8vIFRoaXMgc2hvdWxkIGJlIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgYSBmdW5jdGlvbmFsIGNo
YW5nZSBpcyBtYWRlIHRvIHRoZSBieXRlY29kZSwgZmlsZSBmb3JtYXQsIGV0Yy4KICAgICAvLyB0
byBwcmV2ZW50IGNyYXNoaW5nIHdoaWxlIGxvYWRpbmcgb2xkIGRhdGEuCi0gICAgY29uc3Qgc3Rh
dGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA3OworICAg
IGNvbnN0IHN0YXRpYyB1aW50MzJfdCBDdXJyZW50Q29udGVudEV4dGVuc2lvbkZpbGVWZXJzaW9u
ID0gODsKIAogICAgIHN0YXRpYyBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlJiBkZWZhdWx0U3Rv
cmUoKTsKICAgICBzdGF0aWMgUmVmPFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHN0b3JlV2l0
aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCk7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTM2NTYpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0w
OSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFtDb250ZW50IEV4dGVuc2lvbnNdIEludHJvZHVjZSBpZi10b3AtdXJsIGFuZCB1bmxlc3MtdG9w
LXVybAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgQWRkIHRlc3RzIGZvciBuZXcgZnVu
Y3Rpb25hbGl0eSBhbmQgbmV3IGZhaWx1cmUgdHlwZXMuCisKIDIwMTctMDMtMDggIE1hdHQgUmFq
Y2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAgICAgICAgIExldCBjbGllbnRzIGNvbnRyb2wgYXV0
b3BsYXkgcXVpcmtzIHdpdGggd2Vic2l0ZSBwb2xpY2llcy4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAko
cmV2aXNpb24gMjEzNTMzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bnRlbnRFeHRlbnNpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsOCBAQCBzdHJ1
Y3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSB7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRl
bnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0ZT4gYWN0aW9uczsKICAgICBWZWN0b3I8Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnM7CiAgICAg
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4gZmlsdGVyc1dpdGhDb25kaXRp
b25zOwotICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGNvbmRpdGlv
bmVkRmlsdGVyczsKKyAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiB0
b3BVUkxGaWx0ZXJzOworICAgIGJvb2wgY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluIHsgZmFs
c2UgfTsKIH07CiAKIGNsYXNzIEluTWVtb3J5Q29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xp
ZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uQ29t
cGlsYXRpb25DbGllbnQgewpAQCAtOTYsMzggKzk3LDQwIEBAIHB1YmxpYzoKICAgICAgICAgRVhQ
RUNUX0VRKGRhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0
YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgRVhQRUNU
X0VRKGRhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIEVY
UEVDVF9FUShkYXRhLmNvbmRpdGlvbmVkRmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBF
WFBFQ1RfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgMHVsbCk7CiAgICAgfQogCi0gICAg
dm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0
aW9uQnl0ZT4mJiBhY3Rpb25zKSBmaW5hbAorICAgIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYgYWN0aW9ucywgYm9vbCBj
b25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pIGZpbmFsCiAgICAgewogICAgICAgICBFWFBFQ1Rf
RkFMU0UoZmluYWxpemVkKTsKICAgICAgICAgRVhQRUNUX0VRKG1fZGF0YS5hY3Rpb25zLnNpemUo
KSwgMHVsbCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zLnNpemUoKSwgMHVsbCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhD
b25kaXRpb25zLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIEVYUEVDVF9FUShtX2RhdGEuY29uZGl0
aW9uZWRGaWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVYUEVDVF9FUShtX2RhdGEudG9w
VVJMRmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmFjdGlv
bnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgbV9kYXRhLmFjdGlvbnMuYXBwZW5kVmVjdG9yKGFj
dGlvbnMpOworICAgICAgICBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluID0gY29u
ZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgIH0KICAgICAKICAgICB2b2lkIHdyaXRlRmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShmaW5hbGl6ZWQpOwogICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0
aW9ucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmNvbmRpdGlvbmVk
RmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLnRvcFVSTEZp
bHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0
aW9ucy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KICAgICAKICAgICB2b2lkIHdyaXRl
RmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShmaW5hbGl6ZWQpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmNvbmRpdGlvbmVkRmlsdGVy
cy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLnRvcFVSTEZpbHRlcnMu
c2l6ZSgpLCAwdWxsKTsKICAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5hcHBl
bmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHdyaXRlQ29uZGl0aW9u
ZWRGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4m
JiBieXRlY29kZSkgZmluYWwKKyAgICB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2RlKFZl
Y3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAg
ICAgewogICAgICAgICBFWFBFQ1RfRkFMU0UoZmluYWxpemVkKTsKLSAgICAgICAgbV9kYXRhLmNv
bmRpdGlvbmVkRmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOworICAgICAgICBtX2RhdGEu
dG9wVVJMRmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KICAgICAKICAgICB2
b2lkIGZpbmFsaXplKCkgZmluYWwKQEAgLTE3MSw4ICsxNzQsOSBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLnNpemUoKTsgfQogICAg
IGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhDb25kaXRp
b25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEuZmlsdGVyc1dpdGhDb25k
aXRpb25zLmRhdGEoKTsgfQogICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVj
b2RlTGVuZ3RoKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0
aW9ucy5zaXplKCk7IH0KLSAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUq
IGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRh
LmNvbmRpdGlvbmVkRmlsdGVycy5kYXRhKCk7IH0KLSAgICB1bnNpZ25lZCBjb25kaXRpb25lZEZp
bHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS5jb25kaXRp
b25lZEZpbHRlcnMuc2l6ZSgpOyB9CisgICAgY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlKiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rh
dGEudG9wVVJMRmlsdGVycy5kYXRhKCk7IH0KKyAgICB1bnNpZ25lZCB0b3BVUkxGaWx0ZXJzQnl0
ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEudG9wVVJMRmlsdGVycy5z
aXplKCk7IH0KKyAgICBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW47IH0KIAogcHJp
dmF0ZToKICAgICBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbihDb21waWxlZENvbnRl
bnRFeHRlbnNpb25EYXRhJiYgZGF0YSkKQEAgLTc4OCw3ICs3OTIsNzIgQEAgVEVTVF9GKENvbnRl
bnRFeHRlbnNpb25UZXN0LCBEb21haW5UcmlnZwogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL2V4Y2VwdC10aGlzLWlnbm9yZS1w
cmV2aW91cy10cmlnZ2VyLW9uLXNjcmlwdHMuaHRtbCIsIFJlc291cmNlVHlwZTo6U2NyaXB0KSwg
eyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tDb29raWVzLCBDb250ZW50RXh0
ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3RvciB9KTsKICAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90d2Via2l0Lm9y
Zy9leGNlcHQtdGhpcy1pZ25vcmUtcHJldmlvdXMtdHJpZ2dlci1vbi1zY3JpcHRzLmh0bWwudGVz
dC5odG1sIiwgUmVzb3VyY2VUeXBlOjpTY3JpcHQpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0Nvb2tpZXMsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tD
b29raWVzIH0pOwogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHA6Ly93ZWJraXQub3JnL2V4Y2VwdC10aGlzLWlnbm9yZS1wcmV2aW91cy10cmlnZ2VyLW9u
LXNjcmlwdHMuaHRtbC50ZXN0Lmh0bWwiLCBSZXNvdXJjZVR5cGU6OlNjcmlwdCksIHsgQ29udGVu
dEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrQ29va2llcywgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRlbnRFeHRlbnNpb25zOjpB
Y3Rpb25UeXBlOjpCbG9ja0xvYWQsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9j
a0Nvb2tpZXMgfSk7Cit9CiAKK1RFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgVG9wVVJMKQor
eworICAgIGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZT4gYmxvY2tM
b2FkID0geyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2FkIH07CisgICAg
Y29uc3QgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlPiBibG9ja0Nvb2tpZXMg
PSB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXMgfTsKKworICAg
IGF1dG8gaWZUb3BVUkwgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJs
b2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcXFxcLmh0bWxcIiwgXCJp
Zi10b3AtdXJsXCI6W1wiXmh0dHA6Ly93ZWIuKmtpdC5vcmdcIl19fV0iKTsKKyAgICB0ZXN0UmVx
dWVzdChpZlRvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVz
dC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkwsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3Qubm90X2h0bWwiKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL1dFQktJ
VC5vcmcvdGVzdC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkws
IG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL1RFU1QuaHRtbCIpLCBibG9j
a0xvYWQpOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vd2ViX19raXQub3JnL3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgIHRlc3RSZXF1
ZXN0KGlmVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via19faXQub3JnL3Rl
c3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBtYWluRG9jdW1lbnRS
ZXF1ZXN0KCJodHRwOi8vd2ViX19raXQub3JnL3Rlc3Qubm90X2h0bWwiKSwgeyB9KTsKKyAgICB0
ZXN0UmVxdWVzdChpZlRvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL25vdF93ZWJr
aXQub3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBzdWJS
ZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDov
L3dlYmtpdC5vcmcvbm90X3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgIHRlc3RSZXF1ZXN0
KGlmVG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0
Lmh0bWwiLCAiaHR0cDovL25vdF93ZWJraXQub3JnL25vdF90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgc3ViUmVzb3VyY2VSZXF1ZXN0KCJodHRwOi8vd2Via2l0
Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL25vdF93ZWJraXQub3JnL25vdF90ZXN0Lmh0bWwiKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgc3ViUmVzb3VyY2VSZXF1ZXN0KCJodHRw
Oi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRt
bCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVlc3Qo
Imh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0
bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgc3ViUmVzb3VyY2VS
ZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL2V4YW1wbGUuY29t
LyNodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChp
ZlRvcFVSTCwgc3ViUmVzb3VyY2VSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vI2h0dHA6Ly93
ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxv
Y2tMb2FkKTsKKworICAgIGF1dG8gdW5sZXNzVG9wVVJMID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ0
ZXN0XFxcXC5odG1sXCIsIFwidW5sZXNzLXRvcC11cmxcIjpbXCJeaHR0cDovL3dlYi4qa2l0Lm9y
Z1wiXX19XSIpOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVSTCwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3QodW5sZXNzVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vV0VCS0lULm9yZy90
ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL1RFU1QuaHRtbCIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KHVubGVzc1RvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtp
dC5vcmcvdGVzdC5ub3RfaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVS
TCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYl9fa2l0Lm9yZy90ZXN0Lmh0bWwiKSwg
eyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIG1haW5Eb2N1bWVudFJlcXVlc3Qo
Imh0dHA6Ly93ZWJrX19pdC5vcmcvdGVzdC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJl
cXVlc3QodW5sZXNzVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2ViX19raXQu
b3JnL3Rlc3Qubm90X2h0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkws
IG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwg
YmxvY2tMb2FkKTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIHN1YlJlc291cmNlUmVx
dWVzdCgiaHR0cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vd2Via2l0Lm9y
Zy9ub3RfdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9wVVJMLCBz
dWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0
cDovL25vdF93ZWJraXQub3JnL25vdF90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0
UmVxdWVzdCh1bmxlc3NUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL3dlYmtpdC5v
cmcvdGVzdC5odG1sIiwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy9ub3RfdGVzdC5odG1sIiksIGJs
b2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVl
c3QoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vbm90X3dlYmtpdC5vcmcv
dGVzdC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9wVVJMLCBz
dWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8v
d2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BV
UkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8jaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIGJsb2NrTG9h
ZCk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVlc3QoImh0
dHA6Ly9leGFtcGxlLmNvbS8jaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0dHA6Ly93
ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworCisgICAgYXV0byBpZlRvcFVSTE1hdGNoZXNF
dmVyeXRoaW5nID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwiaWYtdG9w
LXVybFwiOltcIi4qXCJdfX1dIik7CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkxNYXRjaGVzRXZl
cnl0aGluZywgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1s
IiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkxNYXRjaGVzRXZlcnl0aGlu
ZywgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5ub3RfaHRtbCIp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMTWF0Y2hlc0V2ZXJ5dGhpbmcsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tM
b2FkKTsKKyAgICAKKyAgICBhdXRvIHVubGVzc1RvcFVSTE1hdGNoZXNFdmVyeXRoaW5nID0gbWFr
ZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7
XCJ1cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwidW5sZXNzLXRvcC11cmxcIjpbXCIu
KlwiXX19XSIpOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVSTE1hdGNoZXNFdmVyeXRoaW5n
LCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9
KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkxNYXRjaGVzRXZlcnl0aGluZywgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5ub3RfaHRtbCIpLCB7IH0pOwor
ICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVSTE1hdGNoZXNFdmVyeXRoaW5nLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAg
CisgICAgYXV0byBtaXhlZENvbmRpdGlvbnMgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcXFxc
Lmh0bWxcIiwgXCJpZi10b3AtdXJsXCI6W1wiXmh0dHA6Ly93ZWIuKmtpdC5vcmdcIl19fSwiCisg
ICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9jay1jb29raWVzXCJ9LFwidHJpZ2dl
clwiOntcInJlc291cmNlLXR5cGVcIjpbXCJkb2N1bWVudFwiXSwgXCJ1cmwtZmlsdGVyXCI6XCJ0
ZXN0XFxcXC5odG1sXCIsIFwidW5sZXNzLXRvcC11cmxcIjpbXCJeaHR0cDovL3dlYi4qa2l0Lm9y
Z1wiXX19XSIpOworICAgIHRlc3RSZXF1ZXN0KG1peGVkQ29uZGl0aW9ucywgbWFpbkRvY3VtZW50
UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAg
dGVzdFJlcXVlc3QobWl4ZWRDb25kaXRpb25zLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8v
bm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIGJsb2NrQ29va2llcyk7CisgICAgdGVzdFJlcXVl
c3QobWl4ZWRDb25kaXRpb25zLCBzdWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3Jn
L3Rlc3QuaHRtbCIsICJodHRwOi8vbm90X3dlYmtpdC5vcmciLCBSZXNvdXJjZVR5cGU6OkRvY3Vt
ZW50KSwgYmxvY2tDb29raWVzKTsKKyAgICB0ZXN0UmVxdWVzdChtaXhlZENvbmRpdGlvbnMsIHN1
YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0dHA6Ly9u
b3Rfd2Via2l0Lm9yZyIsIFJlc291cmNlVHlwZTo6SW1hZ2UpLCB7IH0pOworCisgICAgYXV0byBj
YXNlU2Vuc2l0aXZlID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwiaWYt
dG9wLXVybFwiOltcIl5odHRwOi8vd2ViLipraXQub3JnL3Rlc3RcIl0sIFwidG9wLXVybC1maWx0
ZXItaXMtY2FzZS1zZW5zaXRpdmVcIjp0cnVlfX1dIik7CisgICAgdGVzdFJlcXVlc3QoY2FzZVNl
bnNpdGl2ZSwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1s
IiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QoY2FzZVNlbnNpdGl2ZSwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL1dFQktJVC5vcmcvdGVzdC5odG1sIiksIGJsb2NrTG9hZCk7IC8v
IGRvbWFpbnMgYXJlIGNhbm9uaWNhbGl6ZWQgYmVmb3JlIHJ1bm5pbmcgcmVnZXhlcy4KKyAgICB0
ZXN0UmVxdWVzdChjYXNlU2Vuc2l0aXZlLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Vi
a2l0Lm9yZy9URVNULmh0bWwiKSwgeyB9KTsKKworICAgIGF1dG8gY2FzZUluc2Vuc2l0aXZlID0g
bWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwiaWYtdG9wLXVybFwiOltcIl5o
dHRwOi8vd2ViLipraXQub3JnL3Rlc3RcIl19fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChjYXNlSW5z
ZW5zaXRpdmUsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRt
bCIpLCBibG9ja0xvYWQpOworICAgIHRlc3RSZXF1ZXN0KGNhc2VJbnNlbnNpdGl2ZSwgbWFpbkRv
Y3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvVEVTVC5odG1sIiksIGJsb2NrTG9hZCk7
CiB9CiAKIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgTXVsdGlwbGVFeHRlbnNpb25zKQpA
QCAtMTM2NCw2ICsxNDMzLDE3IEBAIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgSW52YWxp
ZEpTT04KICAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKlwiLFwidW5sZXNzLWRvbWFp
blwiOltcImFcIl19fV0iLCB7IH0pOwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlv
blwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIltc
In19XSIsCiAgICAgICAgIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05JbnZhbGlkUmVnZXgpOworCisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Vi
a2l0Lm9yZ1wiLFwiaWYtZG9tYWluXCI6W1wiYVwiXSxcInVubGVzcy1kb21haW5cIjpbXCJhXCJd
fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRp
cGxlQ29uZGl0aW9ucyk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9y
Z1wiLFwiaWYtdG9wLXVybFwiOltcImFcIl0sXCJ1bmxlc3MtdG9wLXVybFwiOltdfX1dIiwgQ29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0
aW9ucyk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
YmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYt
dG9wLXVybFwiOltcImFcIl0sXCJ1bmxlc3MtdG9wLXVybFwiOltcImFcIl19fV0iLCBDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25z
KTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
a1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21h
aW5cIjpbXCJhXCJdLFwiaWYtdG9wLXVybFwiOltcImFcIl19fV0iLCBDb250ZW50RXh0ZW5zaW9u
czo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKKyAgICBj
aGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi10b3AtdXJsXCI6W10s
XCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOworICAgIGNoZWNrQ29tcGls
ZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntc
InVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLXRvcC11cmxcIjpbXCJhXCJdLFwiaWYt
ZG9tYWluXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9u
RXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOworICAgIGNoZWNrQ29tcGlsZXJFcnJvcigi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLXRvcC11cmxcIjpbXCJhXCJdfX0sIHtcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtp
dC5vcmdcIixcImlmLWRvbWFpblwiOltcImFcIl19fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9wVVJMQW5kRG9tYWluQ29uZGl0aW9ucyk7CisgICAg
Y2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtdG9wLXVybFwiOltc
ImFcIl19fSwge1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1wi
dXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwidW5sZXNzLWRvbWFpblwiOltcImFcIl19fV0i
LCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9wVVJMQW5k
RG9tYWluQ29uZGl0aW9ucyk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6
e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwidGVzdFxc
XFwuaHRtbFwiLCBcInVubGVzcy10b3AtdXJsXCI6W1wiW1wiXX19XSIsIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXgpOworICAgIGNoZWNr
Q29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dl
clwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdcIiwgXCJ1bmV4cGVjdGVkLWlkZW50aWZp
ZXItc2hvdWxkLWJlLWlnbm9yZWRcIjo1fX1dIiwgeyB9KTsKIH0KIAogVEVTVF9GKENvbnRlbnRF
eHRlbnNpb25UZXN0LCBTdHJpY3RQcmVmaXhTZXBhcmF0ZWRNYWNoaW5lczEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303977</attachid>
            <date>2017-03-09 13:29:23 -0800</date>
            <delta_ts>2017-03-09 14:09:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169433-20170309132924.patch</filename>
            <type>text/plain</type>
            <size>69105</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE3LTAzLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gSW50cm9kdWNlIGlmLXRvcC11cmwgYW5kIHVubGVzcy10b3AtdXJsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiByMTg0MTE2IEkg
YWRkZWQgaWYtZG9tYWluIGFuZCB1bmxlc3MtZG9tYWluIHRvIGNvbnRyb2wgd2hldGhlciBhIHJ1
bGUgYXBwbGllcworICAgICAgICBiYXNlZCBvbiB0aGUgZG9tYWluIG9mIHRoZSBtYWluIGRvY3Vt
ZW50IFVSTC4gIEknbSBleHBhbmRpbmcgdGhpcyBieSBhZGRpbmcgaWYtdG9wLXVybAorICAgICAg
ICBhbmQgdW5sZXNzLXRvcC11cmwgdGhhdCBydW4gcmVndWxhciBleHByZXNzaW9ucyBvbiB0aGUg
ZW50aXJlIG1haW4gZG9jdW1lbnQgVVJMIHNvIHRoYXQKKyAgICAgICAgZXhhbXBsZS5jb20vdXNl
cjFjb250ZW50IGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20gZXhhbXBsZS5jb20vdXNlcjJjb250
ZW50LgorICAgICAgICBUbyBub3QgYWRkIHRvIHRoZSBudW1iZXIgb2YgcGFzc2VzIHdlIG1ha2Ug
b24gdGhlIFVSTHMgZm9yIGVhY2ggbG9hZCBhbmQgdG8gbWFpbnRhaW4gSlNPTgorICAgICAgICBi
YWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgSSd2ZSBtYWRlIGl0IHNvIHRoYXQgaWYtdG9wLXVybCBh
bmQgdW5sZXNzLXRvcC11cmwgY2FuIGJlIHVzZWQKKyAgICAgICAgaW5zdGVhZCBvZiBpZi1kb21h
aW4gYW5kIHVubGVzcy1kb21haW4gKHdoaWNoIGNvbnRpbnVlIHRvIHdvcmspIGJ1dCB0aGUgdHdv
IGNvbmRpdGlvbiB0eXBlcworICAgICAgICBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciBzaW5jZSBy
dW5uaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgb24gdGhlIGVudGlyZSBtYWluIGRvY3VtZW50IFVS
TAorICAgICAgICBpcyBzdHJpY3RseSBtb3JlIHBvd2VyZnVsIHRoYW4gY2hlY2tpbmcgdGhlIGRv
bWFpbiBhbmQgc3ViZG9tYWlucy4KKyAgICAgICAgQXMgYSBtaW5vciBkZXRhaWwsIGNvbnRlbnQg
ZXh0ZW5zaW9uIHJlZ2V4ZXMgYXJlIGJ5IGRlZmF1bHQgQVNDSUktY2FzZS1pbnNlbnNpdGl2ZSwg
c28gSSd2ZQorICAgICAgICBkb25lIHRoZSBzYW1lIHdpdGggdG9wIFVSTCByZWdleGVzLCBhZGRp
bmcgdG9wLXVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUgdG8gbWlycm9yIHRoZSBleGlzdGlu
ZworICAgICAgICB1cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIGlmIHRoZSBKU09OIGF1dGhv
ciBkZWNpZGVzIHRvIG1ha2UgcmVnZXhlcyBjYXNlIHNlbnNpdGl2ZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21w
aWxlZENvbnRlbnRFeHRlbnNpb24uaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbkNhY2hlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnRvcFVSTEFj
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb246OmNhY2hlZENvbmRpdGlvbmVkQWN0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5oOgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6YWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlVG9CeXRlY29kZSk6CisgICAgICAgIFdl
IGhhZCB0aHJlZSBjb3BpZXMgb2YgY29tcGlsaW5nIHRvIGJ5dGVjb2RlIHRoYXQgd2VyZSBhbG1v
c3QgdGhlIHNhbWUgYW5kIHdvdWxkJ3ZlIGJlZW4gbWFkZSBpbnRvIHRocmVlIGNvcGllcyBvZiB0
aGUgc2FtZSBjb2RlLgorICAgICAgICBJIG1vdmVkIHRoZW0gdG8gb25lIGhlbHBlciBmdW5jdGlv
biB0aGF0IGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6Y29udGVudEV4dGVuc2lvbkVycm9yQ2F0ZWdvcnkpOgorICAgICAgICBBZGQgdGhl
IG5ldyBlcnJvciB0eXBlIGZvciBKU09OIHRoYXQgdHJpZXMgdG8gdXNlIGlmLXRvcC11cmwgYW5k
IHVubGVzcy10b3AtdXJsIHdpdGggaWYtZG9tYWluIGFuZCB1bmxlc3MtZG9tYWluLgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oOgorICAgICAgICAq
IGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKToKKyAgICAgICAgUGFyc2Ug
dGhlIG5ldyB2YWx1ZXMgaWYtdG9wLXVybCwgdW5sZXNzLXRvcC11cmwsIGFuZCB0b3AtdXJsLWZp
bHRlci1pcy1jYXNlLXNlbnNpdGl2ZS4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OlRyaWdnZXI6On5UcmlnZ2VyKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZCk6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRl
cjo6aW50ZXJwcmV0QXBwZW5kQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBl
bmRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVj
b2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFdpdGhDb25kaXRpb25zKToKKyAgICAgICAgKiBjb250
ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmg6CisKIDIwMTctMDMtMDcgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQ29u
dGVudCBFeHRlbnNpb25zXSBSZW5hbWUgIkRvbWFpbiIgdG8gIkNvbmRpdGlvbiIgd2hlcmUgYXBw
cm9wcmlhdGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVk
Q29udGVudEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyMTM1MzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgREZBQnl0ZWNvZGUqIGZpbHRlcnNXaXRoQ29uZGl0
aW9uc0J5dGVjb2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25z
dCBERkFCeXRlY29kZSogY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB1bnNpZ25lZCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IERGQUJ5dGVjb2RlKiB0b3BVUkxGaWx0ZXJzQnl0
ZWNvZGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCB0b3BVUkxGaWx0ZXJzQnl0
ZWNvZGVMZW5ndGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTZXJpYWxpemVkQWN0
aW9uQnl0ZSogYWN0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGFjdGlv
bnNMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbmRpdGlvbnNBcHBseU9u
bHlUb0RvbWFpbigpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRl
bnNpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOCwzMSArMTE4LDMzIEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbjo6Y29tcGlsZUdsb2Jh
bERpc3AKIAogdm9pZCBDb250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbkNhY2hlSWZO
ZWVkZWQoY29uc3QgVVJMJiB0b3BVUkwpCiB7Ci0gICAgU3RyaW5nIGRvbWFpbiA9IHRvcFVSTC5o
b3N0KCk7Ci0gICAgaWYgKG1fY2FjaGVkRG9tYWluICE9IGRvbWFpbikgewotICAgICAgICBERkFC
eXRlY29kZUludGVycHJldGVyIGludGVycHJldGVyKG1fY29tcGlsZWRFeHRlbnNpb24tPmNvbmRp
dGlvbmVkRmlsdGVyc0J5dGVjb2RlKCksIG1fY29tcGlsZWRFeHRlbnNpb24tPmNvbmRpdGlvbmVk
RmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkpOworICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BV
UkwpIHsKKyAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBp
bGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lv
bi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBjb25zdCB1aW50MTZf
dCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzID0gTG9hZFR5cGVNYXNrIHwgUmVzb3VyY2VU
eXBlTWFzazsKLSAgICAgICAgYXV0byBkb21haW5BY3Rpb25zID0gaW50ZXJwcmV0ZXIuaW50ZXJw
cmV0KGRvbWFpbi51dGY4KCksIGFsbExvYWRUeXBlc0FuZFJlc291cmNlVHlwZXMpOworICAgICAg
ICBTdHJpbmcgc3RyaW5nID0gbV9jb21waWxlZEV4dGVuc2lvbi0+Y29uZGl0aW9uc0FwcGx5T25s
eVRvRG9tYWluKCkgPyB0b3BVUkwuaG9zdCgpIDogdG9wVVJMLnN0cmluZygpOworICAgICAgICBh
dXRvIHRvcFVSTEFjdGlvbnMgPSBpbnRlcnByZXRlci5pbnRlcnByZXQoc3RyaW5nLnV0ZjgoKSwg
YWxsTG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyk7CiAgICAgICAgIAotICAgICAgICBtX2NhY2hl
ZENvbmRpdGlvbmVkQWN0aW9ucy5jbGVhcigpOwotICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlv
biA6IGRvbWFpbkFjdGlvbnMpCi0gICAgICAgICAgICBtX2NhY2hlZENvbmRpdGlvbmVkQWN0aW9u
cy5hZGQoYWN0aW9uKTsKKyAgICAgICAgbV9jYWNoZWRUb3BVUkxBY3Rpb25zLmNsZWFyKCk7Cisg
ICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogdG9wVVJMQWN0aW9ucykKKyAgICAgICAgICAg
IG1fY2FjaGVkVG9wVVJMQWN0aW9ucy5hZGQoYWN0aW9uKTsKKyAgICAgICAgZm9yICh1aW50NjRf
dCBhY3Rpb24gOiBpbnRlcnByZXRlci5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkpCisgICAg
ICAgICAgICBtX2NhY2hlZFRvcFVSTEFjdGlvbnMuYWRkKGFjdGlvbik7CiAgICAgICAgIAogICAg
ICAgICBtX2NhY2hlZFVuaXZlcnNhbENvbmRpdGlvbmVkQWN0aW9ucy5jbGVhcigpOwogICAgICAg
ICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25z
KSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoKGFjdGlvbiAmIH5JZkNvbmRpdGlvbkZs
YWcpID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pLCAiVW5pdmVyc2FsIGFjdGlvbnMg
d2l0aCBkb21haW5zIHNob3VsZCBub3QgaGF2ZSBmbGFncy4iKTsKLSAgICAgICAgICAgIGlmICgh
IShhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpID09IG1fY2FjaGVkQ29uZGl0aW9uZWRBY3Rpb25z
LmNvbnRhaW5zKGFjdGlvbikpCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoKGFjdGlvbiAm
IH5JZkNvbmRpdGlvbkZsYWcpID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pLCAiVW5p
dmVyc2FsIGFjdGlvbnMgd2l0aCBjb25kaXRpb25zIHNob3VsZCBub3QgaGF2ZSBmbGFncy4iKTsK
KyAgICAgICAgICAgIGlmICghIShhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpID09IG1fY2FjaGVk
VG9wVVJMQWN0aW9ucy5jb250YWlucyhhY3Rpb24pKQogICAgICAgICAgICAgICAgIG1fY2FjaGVk
VW5pdmVyc2FsQ29uZGl0aW9uZWRBY3Rpb25zLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9jYWNoZWRVbml2ZXJzYWxDb25kaXRpb25l
ZEFjdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgbV9jYWNoZWREb21haW4gPSBkb21haW47
CisgICAgICAgIG1fY2FjaGVkVG9wVVJMID0gdG9wVVJMOwogICAgIH0KIH0KIAotY29uc3QgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgQ29udGVudEV4dGVuc2lvbjo6Y2FjaGVkQ29u
ZGl0aW9uZWRBY3Rpb25zKGNvbnN0IFVSTCYgdG9wVVJMKQorY29uc3QgREZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6QWN0aW9ucyYgQ29udGVudEV4dGVuc2lvbjo6dG9wVVJMQWN0aW9ucyhjb25zdCBV
UkwmIHRvcFVSTCkKIHsKICAgICBwb3B1bGF0ZUNvbmRpdGlvbkNhY2hlSWZOZWVkZWQodG9wVVJM
KTsKLSAgICByZXR1cm4gbV9jYWNoZWRDb25kaXRpb25lZEFjdGlvbnM7CisgICAgcmV0dXJuIG1f
Y2FjaGVkVG9wVVJMQWN0aW9uczsKIH0KIAogY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgQ29udGVu
dEV4dGVuc2lvbjo6dW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKGNvbnN0IFVSTCYgdG9w
VVJMKQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb24uaAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24mIGNvbXBpbGVkRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxlZEV4dGVuc2lv
bi5nZXQoKTsgfQogICAgIFN0eWxlU2hlZXRDb250ZW50cyogZ2xvYmFsRGlzcGxheU5vbmVTdHls
ZVNoZWV0KCk7Ci0gICAgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgY2Fj
aGVkQ29uZGl0aW9uZWRBY3Rpb25zKGNvbnN0IFVSTCYgdG9wVVJMKTsKKyAgICBjb25zdCBERkFC
eXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiB0b3BVUkxBY3Rpb25zKGNvbnN0IFVSTCYgdG9w
VVJMKTsKICAgICBjb25zdCBWZWN0b3I8dWludDMyX3Q+JiB1bml2ZXJzYWxBY3Rpb25zV2l0aG91
dENvbmRpdGlvbnMoKSB7IHJldHVybiBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9u
czsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29u
ZGl0aW9ucyhjb25zdCBVUkwmIHRvcFVSTCk7CiAKQEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBtX2dsb2JhbERpc3BsYXlOb25lU3R5bGVT
aGVldDsKICAgICB2b2lkIGNvbXBpbGVHbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoKTsKIAot
ICAgIFN0cmluZyBtX2NhY2hlZERvbWFpbjsKKyAgICBVUkwgbV9jYWNoZWRUb3BVUkw7CiAgICAg
dm9pZCBwb3B1bGF0ZUNvbmRpdGlvbkNhY2hlSWZOZWVkZWQoY29uc3QgVVJMJiB0b3BVUkwpOwot
ICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgbV9jYWNoZWRDb25kaXRpb25lZEFj
dGlvbnM7CisgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyBtX2NhY2hlZFRvcFVS
TEFjdGlvbnM7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBtX2NhY2hlZFVuaXZlcnNhbENvbmRpdGlv
bmVkQWN0aW9uczsKIAogICAgIFZlY3Rvcjx1aW50MzJfdD4gbV91bml2ZXJzYWxBY3Rpb25zV2l0
aG91dENvbmRpdGlvbnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAJKHJldmlzaW9u
IDIxMzUzMykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0
aWMgVmVjdG9yPHVuc2lnbmVkPiBzZXJpYWxpemVBY3Rpb25zCiAKIHR5cGVkZWYgSGFzaFNldDx1
aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gVW5pdmVyc2FsQWN0aW9uU2V0OwogCi1zdGF0aWMg
dm9pZCBhZGRVbml2ZXJzYWxBY3Rpb25zVG9ERkEoREZBJiBkZmEsIGNvbnN0IFVuaXZlcnNhbEFj
dGlvblNldCYgdW5pdmVyc2FsQWN0aW9ucykKK3N0YXRpYyB2b2lkIGFkZFVuaXZlcnNhbEFjdGlv
bnNUb0RGQShERkEmIGRmYSwgVW5pdmVyc2FsQWN0aW9uU2V0JiYgdW5pdmVyc2FsQWN0aW9ucykK
IHsKICAgICBpZiAodW5pdmVyc2FsQWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTIwNSw2ICsyMDUsNzggQEAgc3RhdGljIHZvaWQgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZB
KERGQQogICAgIHJvb3Quc2V0QWN0aW9ucyhhY3Rpb25zU3RhcnQsIHN0YXRpY19jYXN0PHVpbnQx
Nl90PihhY3Rpb25zTGVuZ3RoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Citz
dGF0aWMgdm9pZCBjb21waWxlVG9CeXRlY29kZShDb21iaW5lZFVSTEZpbHRlcnMmJiBmaWx0ZXJz
LCBVbml2ZXJzYWxBY3Rpb25TZXQmJiB1bml2ZXJzYWxBY3Rpb25zLCBGdW5jdG9yIHdyaXRlQnl0
ZWNvZGVUb0NsaWVudCkKK3sKKyAgICAvLyBTbWFsbGVyIG1heE5GQVNpemVzIHJpc2sgaGlnaCBj
b21waWxpbmcgYW5kIGludGVycHJldGluZyB0aW1lcyBmcm9tIGhhdmluZyB0b28gbWFueSBERkFz
LAorICAgIC8vIGxhcmdlciBtYXhORkFTaXplcyB1c2UgdG9vIG11Y2ggbWVtb3J5IHdoZW4gY29t
cGlsaW5nLgorICAgIGNvbnN0IHVuc2lnbmVkIG1heE5GQVNpemUgPSA3NTAwMDsKKworICAgIGJv
b2wgZmlyc3RORkFTZWVuID0gZmFsc2U7CisKKyAgICBhdXRvIGxvd2VyREZBVG9CeXRlY29kZSA9
IFsmXShERkEmJiBkZmEpCisgICAgeworI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFURV9NQUNI
SU5FX0RFQlVHR0lORworICAgICAgICBkYXRhTG9nRigiREZBXG4iKTsKKyAgICAgICAgZGZhLmRl
YnVnUHJpbnREb3QoKTsKKyNlbmRpZgorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFkZmEu
bm9kZXNbZGZhLnJvb3RdLmhhc0FjdGlvbnMoKSwgIkFsbCBhY3Rpb25zIG9uIHRoZSBERkEgcm9v
dCBzaG91bGQgY29tZSBmcm9tIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCBldmVyeXRo
aW5nLiIpOworCisgICAgICAgIGlmICghZmlyc3RORkFTZWVuKSB7CisgICAgICAgICAgICAvLyBQ
dXQgYWxsIHRoZSB1bml2ZXJzYWwgYWN0aW9ucyBvbiB0aGUgZmlyc3QgREZBLgorICAgICAgICAg
ICAgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKGRmYSwgV1RGTW92ZSh1bml2ZXJzYWxBY3Rpb25z
KSk7CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwor
ICAgICAgICBERkFCeXRlY29kZUNvbXBpbGVyIGNvbXBpbGVyKGRmYSwgYnl0ZWNvZGUpOworICAg
ICAgICBjb21waWxlci5jb21waWxlKCk7CisgICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGJ5
dGVjb2RlLCBieXRlY29kZS5jYXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAg
d3JpdGVCeXRlY29kZVRvQ2xpZW50KFdURk1vdmUoYnl0ZWNvZGUpKTsKKyAgICAgICAgZmlyc3RO
RkFTZWVuID0gdHJ1ZTsKKyAgICB9OworCisgICAgY29uc3QgdW5zaWduZWQgc21hbGxERkFTaXpl
ID0gMTAwOworICAgIERGQUNvbWJpbmVyIHNtYWxsREZBQ29tYmluZXI7CisgICAgZmlsdGVycy5w
cm9jZXNzTkZBcyhtYXhORkFTaXplLCBbJl0oTkZBJiYgbmZhKSB7CisjaWYgQ09OVEVOVF9FWFRF
TlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCisgICAgICAgIGRhdGFMb2dGKCJORkFcbiIp
OworICAgICAgICBuZmEuZGVidWdQcmludERvdCgpOworI2VuZGlmCisgICAgICAgIExPR19MQVJH
RV9TVFJVQ1RVUkVTKG5mYSwgbmZhLm1lbW9yeVVzZWQoKSk7CisgICAgICAgIERGQSBkZmEgPSBO
RkFUb0RGQTo6Y29udmVydChuZmEpOworICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhkZmEs
IGRmYS5tZW1vcnlVc2VkKCkpOworCisgICAgICAgIGlmIChkZmEuZ3JhcGhTaXplKCkgPCBzbWFs
bERGQVNpemUpCisgICAgICAgICAgICBzbWFsbERGQUNvbWJpbmVyLmFkZERGQShXVEZNb3ZlKGRm
YSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRmYS5taW5pbWl6ZSgpOworICAgICAg
ICAgICAgbG93ZXJERkFUb0J5dGVjb2RlKFdURk1vdmUoZGZhKSk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHNtYWxsREZBQ29tYmluZXIuY29tYmluZURGQXMoc21hbGxERkFTaXplLCBbJl0o
REZBJiYgZGZhKSB7CisgICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGRmYSwgZGZhLm1lbW9y
eVVzZWQoKSk7CisgICAgICAgIGxvd2VyREZBVG9CeXRlY29kZShXVEZNb3ZlKGRmYSkpOworICAg
IH0pOworCisgICAgQVNTRVJUKGZpbHRlcnMuaXNFbXB0eSgpKTsKKworICAgIGlmICghZmlyc3RO
RkFTZWVuKSB7CisgICAgICAgIC8vIE91ciBieXRlY29kZSBpbnRlcnByZXRlciBleHBlY3RzIHRv
IGhhdmUgYXQgbGVhc3Qgb25lIERGQSwgc28gaWYgd2UgaGF2ZW4ndCBzZWVuIGFueQorICAgICAg
ICAvLyBjcmVhdGUgYSBkdW1teSBvbmUgYW5kIGFkZCBhbnkgdW5pdmVyc2FsIGFjdGlvbnMuCisK
KyAgICAgICAgREZBIGR1bW15REZBID0gREZBOjplbXB0eSgpOworICAgICAgICBhZGRVbml2ZXJz
YWxBY3Rpb25zVG9ERkEoZHVtbXlERkEsIFdURk1vdmUodW5pdmVyc2FsQWN0aW9ucykpOworCisg
ICAgICAgIFZlY3RvcjxERkFCeXRlY29kZT4gYnl0ZWNvZGU7CisgICAgICAgIERGQUJ5dGVjb2Rl
Q29tcGlsZXIgY29tcGlsZXIoZHVtbXlERkEsIGJ5dGVjb2RlKTsKKyAgICAgICAgY29tcGlsZXIu
Y29tcGlsZSgpOworICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhieXRlY29kZSwgYnl0ZWNv
ZGUuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50OF90KSk7CisgICAgICAgIHdyaXRlQnl0ZWNvZGVU
b0NsaWVudChXVEZNb3ZlKGJ5dGVjb2RlKSk7CisgICAgfQorICAgIExPR19MQVJHRV9TVFJVQ1RV
UkVTKHVuaXZlcnNhbEFjdGlvbnMsIHVuaXZlcnNhbEFjdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVv
Zih1bnNpZ25lZCkpOworfQorCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRl
bnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTikK
IHsKICAgICBhdXRvIHJ1bGVMaXN0ID0gcGFyc2VSdWxlTGlzdChXVEZNb3ZlKHJ1bGVKU09OKSk7
CkBAIC0yMTIsMjUgKzI4NCw0NSBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENv
bnRlbnRFCiAgICAgICAgIHJldHVybiBydWxlTGlzdC5lcnJvcigpOwogICAgIFZlY3RvcjxDb250
ZW50RXh0ZW5zaW9uUnVsZT4gcGFyc2VkUnVsZUxpc3QgPSBXVEZNb3ZlKHJ1bGVMaXN0LnZhbHVl
KCkpOwogCisgICAgYm9vbCBkb21haW5Db25kaXRpb25TZWVuID0gZmFsc2U7CisgICAgYm9vbCB0
b3BVUkxDb25kaXRpb25TZWVuID0gZmFsc2U7CisgICAgZm9yIChjb25zdCBhdXRvJiBydWxlIDog
cGFyc2VkUnVsZUxpc3QpIHsKKyAgICAgICAgc3dpdGNoIChydWxlLnRyaWdnZXIoKS5jb25kaXRp
b25UeXBlKSB7CisgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZToKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Oklm
RG9tYWluOgorICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc0RvbWFp
bjoKKyAgICAgICAgICAgIGRvbWFpbkNvbmRpdGlvblNlZW4gPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6SWZUb3BVUkw6Cisg
ICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJMOgorICAgICAg
ICAgICAgdG9wVVJMQ29uZGl0aW9uU2VlbiA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAodG9wVVJMQ29uZGl0aW9uU2VlbiAmJiBkb21haW5Db25k
aXRpb25TZWVuKQorICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9w
VVJMQW5kRG9tYWluQ29uZGl0aW9uczsKKwogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JN
QU5DRV9SRVBPUlRJTkcKICAgICBkb3VibGUgcGF0dGVyblBhcnRpdGlvbmluZ1N0YXJ0ID0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTZXJpYWxp
emVkQWN0aW9uQnl0ZT4gYWN0aW9uczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFjdGlvbkxvY2F0
aW9ucyA9IHNlcmlhbGl6ZUFjdGlvbnMocGFyc2VkUnVsZUxpc3QsIGFjdGlvbnMpOwotICAgIGNs
aWVudC53cml0ZUFjdGlvbnMoV1RGTW92ZShhY3Rpb25zKSk7CiAgICAgTE9HX0xBUkdFX1NUUlVD
VFVSRVMoYWN0aW9ucywgYWN0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKFNlcmlhbGl6ZWRBY3Rp
b25CeXRlKSk7Ci0gICAgYWN0aW9ucy5jbGVhcigpOworICAgIGNsaWVudC53cml0ZUFjdGlvbnMo
V1RGTW92ZShhY3Rpb25zKSwgZG9tYWluQ29uZGl0aW9uU2Vlbik7CiAKICAgICBVbml2ZXJzYWxB
Y3Rpb25TZXQgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zOwogICAgIFVuaXZlcnNh
bEFjdGlvblNldCB1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnM7CisgICAgVW5pdmVyc2Fs
QWN0aW9uU2V0IHVuaXZlcnNhbFRvcFVSTEFjdGlvbnM7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ug
ZG9uJ3QgYWxsIG5lZWQgdG8gYmUgaW4gbWVtb3J5IGF0IHRoZSBzYW1lIHRpbWUuCiAgICAgQ29t
YmluZWRVUkxGaWx0ZXJzIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uczsKICAgICBDb21iaW5lZFVS
TEZpbHRlcnMgZmlsdGVyc1dpdGhDb25kaXRpb25zOwotICAgIENvbWJpbmVkVVJMRmlsdGVycyBj
b25kaXRpb25GaWx0ZXJzOworICAgIENvbWJpbmVkVVJMRmlsdGVycyB0b3BVUkxGaWx0ZXJzOwog
ICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aG91dENvbmRpdGlvblBhcnNlcihmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnMpOwogICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aENvbmRp
dGlvblBhcnNlcihmaWx0ZXJzV2l0aENvbmRpdGlvbnMpOworICAgIFVSTEZpbHRlclBhcnNlciB0
b3BVUkxGaWx0ZXJQYXJzZXIodG9wVVJMRmlsdGVycyk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBwYXJzZWRSdWxlTGlzdC5zaXplKCk7ICsrcnVs
ZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBjb250ZW50RXh0
ZW5zaW9uUnVsZSA9IHBhcnNlZFJ1bGVMaXN0W3J1bGVJbmRleF07CkBAIC0yNTYsMTAgKzM0OCwx
MiBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFCiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHRyaWdnZXIuY29uZGl0aW9uVHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpJZkRvbWFpbjoKKyAgICAgICAg
ICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6SWZUb3BVUkw6CiAgICAgICAgICAgICAg
ICAgYWN0aW9uTG9jYXRpb25BbmRGbGFncyB8PSBJZkNvbmRpdGlvbkZsYWc7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5v
bmU6CiAgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc0RvbWFp
bjoKKyAgICAgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJM
OgogICAgICAgICAgICAgICAgIEFTU0VSVCghKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgJiBJZkNv
bmRpdGlvbkZsYWcpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTI3Myw4ICszNjcsMjMgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50
RQogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5nICVzOiAlc1xu
IiwgdHJpZ2dlci51cmxGaWx0ZXIudXRmOCgpLmRhdGEoKSwgVVJMRmlsdGVyUGFyc2VyOjpzdGF0
dXNTdHJpbmcoc3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFJlZ2V4OwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZm9yIChjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA6IHRyaWdnZXIuY29uZGl0
aW9ucykKLSAgICAgICAgICAgICAgICBjb25kaXRpb25GaWx0ZXJzLmFkZERvbWFpbihhY3Rpb25M
b2NhdGlvbkFuZEZsYWdzLCBjb25kaXRpb24pOworICAgICAgICAgICAgZm9yIChjb25zdCBTdHJp
bmcmIGNvbmRpdGlvbiA6IHRyaWdnZXIuY29uZGl0aW9ucykgeworICAgICAgICAgICAgICAgIGlm
IChkb21haW5Db25kaXRpb25TZWVuKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghdG9w
VVJMQ29uZGl0aW9uU2Vlbik7CisgICAgICAgICAgICAgICAgICAgIHRvcFVSTEZpbHRlcnMuYWRk
RG9tYWluKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MsIGNvbmRpdGlvbik7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRvcFVSTENvbmRpdGlvblNl
ZW4pOworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSB0b3BVUkxGaWx0ZXJQYXJzZXIuYWRk
UGF0dGVybihjb25kaXRpb24sIHRyaWdnZXIudG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZl
LCBhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cyA9PSBVUkxGaWx0ZXJQYXJzZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB1bml2ZXJzYWxUb3BVUkxBY3Rpb25zLmFkZChhY3Rpb25Mb2NhdGlvbkFuZEZs
YWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFVSTEZpbHRlclBhcnNlcjo6
T2s7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cyAhPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nRigiRXJyb3Igd2hpbGUgcGFyc2luZyAlczogJXNcbiIsIGNvbmRpdGlvbi51dGY4KCkuZGF0
YSgpLCBVUkxGaWx0ZXJQYXJzZXI6OnN0YXR1c1N0cmluZyhzdGF0dXMpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6
SlNPTkludmFsaWRSZWdleDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc3RhdHVzID09IFVS
TEZpbHRlclBhcnNlcjo6T2spOwogICAgIH0KQEAgLTI5MCwxODEgKzM5OSwyMSBAQCBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFCiAKICAgICBMT0dfTEFSR0VfU1RSVUNU
VVJFUyhmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnMsIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5t
ZW1vcnlVc2VkKCkpOwogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGZpbHRlcnNXaXRoQ29uZGl0
aW9ucywgZmlsdGVyc1dpdGhDb25kaXRpb25zLm1lbW9yeVVzZWQoKSk7Ci0gICAgTE9HX0xBUkdF
X1NUUlVDVFVSRVMoY29uZGl0aW9uRmlsdGVycywgY29uZGl0aW9uRmlsdGVycy5tZW1vcnlVc2Vk
KCkpOworICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKHRvcFVSTEZpbHRlcnMsIHRvcFVSTEZpbHRl
cnMubWVtb3J5VXNlZCgpKTsKIAogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9S
RVBPUlRJTkcKLSAgICB1bnNpZ25lZCBtYWNoaW5lc1dpdGhvdXRDb25kaXRpb25zQ291bnQgPSAw
OwotICAgIHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVTaXplRm9yTWFjaGluZXNXaXRob3V0Q29uZGl0
aW9ucyA9IDA7Ci0gICAgdW5zaWduZWQgbWFjaGluZXNXaXRoQ29uZGl0aW9uc0NvdW50ID0gMDsK
LSAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlU2l6ZUZvck1hY2hpbmVzV2l0aENvbmRpdGlvbnMg
PSAwOwogICAgIGRvdWJsZSB0b3RhbE5GQVRvQnl0ZUNvZGVCdWlsZFRpbWVTdGFydCA9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogI2VuZGlmCiAKLSAgICAvLyBTbWFsbGVyIG1heE5G
QVNpemVzIHJpc2sgaGlnaCBjb21waWxpbmcgYW5kIGludGVycHJldGluZyB0aW1lcyBmcm9tIGhh
dmluZyB0b28gbWFueSBERkFzLAotICAgIC8vIGxhcmdlciBtYXhORkFTaXplcyB1c2UgdG9vIG11
Y2ggbWVtb3J5IHdoZW4gY29tcGlsaW5nLgotICAgIGNvbnN0IHVuc2lnbmVkIG1heE5GQVNpemUg
PSA3NTAwMDsKLSAgICAKLSAgICBib29sIGZpcnN0TkZBV2l0aG91dENvbmRpdGlvbnNTZWVuID0g
ZmFsc2U7Ci0KLSAgICBhdXRvIGxvd2VyRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zREZBVG9CeXRl
Y29kZSA9IFsmXShERkEmJiBkZmEpCi0gICAgewotI2lmIENPTlRFTlRfRVhURU5TSU9OU19TVEFU
RV9NQUNISU5FX0RFQlVHR0lORwotICAgICAgICBkYXRhTG9nRigiZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zIERGQVxuIik7Ci0gICAgICAgIGRmYS5kZWJ1Z1ByaW50RG90KCk7Ci0jZW5kaWYKLSAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZGZhLm5vZGVzW2RmYS5yb290XS5oYXNBY3Rpb25z
KCksICJBbGwgYWN0aW9ucyBvbiB0aGUgREZBIHJvb3Qgc2hvdWxkIGNvbWUgZnJvbSByZWd1bGFy
IGV4cHJlc3Npb25zIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iKTsKLQotICAgICAgICBpZiAoIWZp
cnN0TkZBV2l0aG91dENvbmRpdGlvbnNTZWVuKSB7Ci0gICAgICAgICAgICAvLyBQdXQgYWxsIHRo
ZSB1bml2ZXJzYWwgYWN0aW9ucyBvbiB0aGUgZmlyc3QgREZBLgotICAgICAgICAgICAgYWRkVW5p
dmVyc2FsQWN0aW9uc1RvREZBKGRmYSwgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25z
KTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxERkFCeXRlY29kZT4gYnl0ZWNvZGU7Ci0g
ICAgICAgIERGQUJ5dGVjb2RlQ29tcGlsZXIgY29tcGlsZXIoZGZhLCBieXRlY29kZSk7Ci0gICAg
ICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoYnl0
ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkpOwotI2lmIENPTlRF
TlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKLSAgICAgICAgKyttYWNoaW5lc1dp
dGhvdXRDb25kaXRpb25zQ291bnQ7Ci0gICAgICAgIHRvdGFsQnl0ZWNvZGVTaXplRm9yTWFjaGlu
ZXNXaXRob3V0Q29uZGl0aW9ucyArPSBieXRlY29kZS5zaXplKCk7Ci0jZW5kaWYKKyAgICBjb21w
aWxlVG9CeXRlY29kZShXVEZNb3ZlKGZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucyksIFdURk1vdmUo
dW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29k
ZT4mJiBieXRlY29kZSkgewogICAgICAgICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7Ci0KLSAgICAgICAgZmlyc3RORkFXaXRo
b3V0Q29uZGl0aW9uc1NlZW4gPSB0cnVlOwotICAgIH07Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBz
bWFsbERGQVNpemUgPSAxMDA7Ci0gICAgREZBQ29tYmluZXIgc21hbGxGaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNERkFDb21iaW5lcjsKLSAgICBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnMucHJvY2Vz
c05GQXMobWF4TkZBU2l6ZSwgWyZdKE5GQSYmIG5mYSkgewotI2lmIENPTlRFTlRfRVhURU5TSU9O
U19TVEFURV9NQUNISU5FX0RFQlVHR0lORwotICAgICAgICBkYXRhTG9nRigiZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zIE5GQVxuIik7Ci0gICAgICAgIG5mYS5kZWJ1Z1ByaW50RG90KCk7Ci0jZW5k
aWYKLQotICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhuZmEsIG5mYS5tZW1vcnlVc2VkKCkp
OwotICAgICAgICBERkEgZGZhID0gTkZBVG9ERkE6OmNvbnZlcnQobmZhKTsKLSAgICAgICAgTE9H
X0xBUkdFX1NUUlVDVFVSRVMoZGZhLCBkZmEubWVtb3J5VXNlZCgpKTsKLQotICAgICAgICBpZiAo
ZGZhLmdyYXBoU2l6ZSgpIDwgc21hbGxERkFTaXplKQotICAgICAgICAgICAgc21hbGxGaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNERkFDb21iaW5lci5hZGRERkEoV1RGTW92ZShkZmEpKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBkZmEubWluaW1pemUoKTsKLSAgICAgICAgICAgIGxvd2Vy
RmlsdGVyc1dpdGhvdXRDb25kaXRpb25zREZBVG9CeXRlY29kZShXVEZNb3ZlKGRmYSkpOwotICAg
ICAgICB9CiAgICAgfSk7Ci0KLQotICAgIHNtYWxsRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zREZB
Q29tYmluZXIuY29tYmluZURGQXMoc21hbGxERkFTaXplLCBbJl0oREZBJiYgZGZhKSB7Ci0gICAg
ICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGRmYSwgZGZhLm1lbW9yeVVzZWQoKSk7Ci0gICAgICAg
IGxvd2VyRmlsdGVyc1dpdGhvdXRDb25kaXRpb25zREZBVG9CeXRlY29kZShXVEZNb3ZlKGRmYSkp
OwotICAgIH0pOwotCi0gICAgQVNTRVJUKGZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5pc0VtcHR5
KCkpOwotCi0gICAgaWYgKCFmaXJzdE5GQVdpdGhvdXRDb25kaXRpb25zU2VlbikgewotICAgICAg
ICAvLyBPdXIgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgZXhwZWN0cyB0byBoYXZlIGF0IGxlYXN0IG9u
ZSBERkEsIHNvIGlmIHdlIGhhdmVuJ3Qgc2VlbiBhbnkKLSAgICAgICAgLy8gY3JlYXRlIGEgZHVt
bXkgb25lIGFuZCBhZGQgYW55IHVuaXZlcnNhbCBhY3Rpb25zLgotCi0gICAgICAgIERGQSBkdW1t
eURGQSA9IERGQTo6ZW1wdHkoKTsKLSAgICAgICAgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKGR1
bW15REZBLCB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMpOwotCi0gICAgICAgIFZl
Y3RvcjxERkFCeXRlY29kZT4gYnl0ZWNvZGU7Ci0gICAgICAgIERGQUJ5dGVjb2RlQ29tcGlsZXIg
Y29tcGlsZXIoZHVtbXlERkEsIGJ5dGVjb2RlKTsKLSAgICAgICAgY29tcGlsZXIuY29tcGlsZSgp
OwotICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhieXRlY29kZSwgYnl0ZWNvZGUuY2FwYWNp
dHkoKSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgICAgIGNsaWVudC53cml0ZUZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKLSAgICB9Ci0gICAgTE9H
X0xBUkdFX1NUUlVDVFVSRVModW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLCB1bml2
ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25l
ZCkpOwotICAgIHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucy5jbGVhcigpOwotICAg
IAotICAgIGJvb2wgZmlyc3RORkFXaXRoQ29uZGl0aW9uc1NlZW4gPSBmYWxzZTsKLSAgICBhdXRv
IGxvd2VyRmlsdGVyc1dpdGhDb25kaXRpb25zREZBVG9CeXRlY29kZSA9IFsmXShERkEmJiBkZmEp
Ci0gICAgewotICAgICAgICBpZiAoIWZpcnN0TkZBV2l0aENvbmRpdGlvbnNTZWVuKSB7Ci0gICAg
ICAgICAgICAvLyBQdXQgYWxsIHRoZSB1bml2ZXJzYWwgYWN0aW9ucyBvbiB0aGUgZmlyc3QgREZB
LgotICAgICAgICAgICAgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKGRmYSwgdW5pdmVyc2FsQWN0
aW9uc1dpdGhDb25kaXRpb25zKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZlY3RvcjxERkFCeXRl
Y29kZT4gYnl0ZWNvZGU7Ci0gICAgICAgIERGQUJ5dGVjb2RlQ29tcGlsZXIgY29tcGlsZXIoZGZh
LCBieXRlY29kZSk7Ci0gICAgICAgIGNvbXBpbGVyLmNvbXBpbGUoKTsKLSAgICAgICAgTE9HX0xB
UkdFX1NUUlVDVFVSRVMoYnl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFjaXR5KCkgKiBzaXplb2YodWlu
dDhfdCkpOwotI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKLSAg
ICAgICAgKyttYWNoaW5lc1dpdGhDb25kaXRpb25zQ291bnQ7Ci0gICAgICAgIHRvdGFsQnl0ZWNv
ZGVTaXplRm9yTWFjaGluZXNXaXRoQ29uZGl0aW9ucyArPSBieXRlY29kZS5zaXplKCk7Ci0jZW5k
aWYKKyAgICBjb21waWxlVG9CeXRlY29kZShXVEZNb3ZlKGZpbHRlcnNXaXRoQ29uZGl0aW9ucyks
IFdURk1vdmUodW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKSwgWyZdKFZlY3RvcjxERkFC
eXRlY29kZT4mJiBieXRlY29kZSkgewogICAgICAgICBjbGllbnQud3JpdGVGaWx0ZXJzV2l0aENv
bmRpdGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7Ci0KLSAgICAgICAgZmlyc3RORkFX
aXRoQ29uZGl0aW9uc1NlZW4gPSB0cnVlOwotICAgIH07Ci0KLSAgICBERkFDb21iaW5lciBzbWFs
bEZpbHRlcnNXaXRoQ29uZGl0aW9uc0RGQUNvbWJpbmVyOwotICAgIGZpbHRlcnNXaXRoQ29uZGl0
aW9ucy5wcm9jZXNzTkZBcyhtYXhORkFTaXplLCBbJl0oTkZBJiYgbmZhKSB7Ci0jaWYgQ09OVEVO
VF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi0gICAgICAgIGRhdGFMb2dGKCJm
aWx0ZXJzV2l0aENvbmRpdGlvbnMgTkZBXG4iKTsKLSAgICAgICAgbmZhLmRlYnVnUHJpbnREb3Qo
KTsKLSNlbmRpZgotICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhuZmEsIG5mYS5tZW1vcnlV
c2VkKCkpOwotICAgICAgICBERkEgZGZhID0gTkZBVG9ERkE6OmNvbnZlcnQobmZhKTsKLSNpZiBD
T05URU5UX0VYVEVOU0lPTlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKLSAgICAgICAgZGF0YUxv
Z0YoImZpbHRlcnNXaXRoQ29uZGl0aW9ucyBQUkUgTUlOSU1JWklORyBERkFcbiIpOwotICAgICAg
ICBkZmEuZGVidWdQcmludERvdCgpOwotI2VuZGlmCi0gICAgICAgIExPR19MQVJHRV9TVFJVQ1RV
UkVTKGRmYSwgZGZhLm1lbW9yeVVzZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghZGZhLm5vZGVzW2RmYS5yb290XS5oYXNBY3Rpb25zKCksICJGaWx0ZXJzIHdpdGggQ29uZGl0
aW9ucyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcgYXJlIG5vdCBhbGxvd2VkIHJpZ2h0IG5vdy4iKTsK
LQotICAgICAgICBpZiAoZGZhLmdyYXBoU2l6ZSgpIDwgc21hbGxERkFTaXplKQotICAgICAgICAg
ICAgc21hbGxGaWx0ZXJzV2l0aENvbmRpdGlvbnNERkFDb21iaW5lci5hZGRERkEoV1RGTW92ZShk
ZmEpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkZmEubWluaW1pemUoKTsKLSAgICAg
ICAgICAgIGxvd2VyRmlsdGVyc1dpdGhDb25kaXRpb25zREZBVG9CeXRlY29kZShXVEZNb3ZlKGRm
YSkpOwotICAgICAgICB9CiAgICAgfSk7Ci0gICAgc21hbGxGaWx0ZXJzV2l0aENvbmRpdGlvbnNE
RkFDb21iaW5lci5jb21iaW5lREZBcyhzbWFsbERGQVNpemUsIFsmXShERkEmJiBkZmEpIHsKLSAg
ICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoZGZhLCBkZmEubWVtb3J5VXNlZCgpKTsKLSAgICAg
ICAgbG93ZXJGaWx0ZXJzV2l0aENvbmRpdGlvbnNERkFUb0J5dGVjb2RlKFdURk1vdmUoZGZhKSk7
Ci0gICAgfSk7Ci0gICAgQVNTRVJUKGZpbHRlcnNXaXRoQ29uZGl0aW9ucy5pc0VtcHR5KCkpOwot
ICAgIAotICAgIGlmICghZmlyc3RORkFXaXRoQ29uZGl0aW9uc1NlZW4pIHsKLSAgICAgICAgLy8g
T3VyIGJ5dGVjb2RlIGludGVycHJldGVyIGV4cGVjdHMgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgREZB
LCBzbyBpZiB3ZSBoYXZlbid0IHNlZW4gYW55Ci0gICAgICAgIC8vIGNyZWF0ZSBhIGR1bW15IG9u
ZSBhbmQgYWRkIGFueSB1bml2ZXJzYWwgYWN0aW9ucy4KLQotICAgICAgICBERkEgZHVtbXlERkEg
PSBERkE6OmVtcHR5KCk7Ci0gICAgICAgIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShkdW1teURG
QSwgdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKTsKLSAgICAgICAgCi0gICAgICAgIFZl
Y3RvcjxERkFCeXRlY29kZT4gYnl0ZWNvZGU7Ci0gICAgICAgIERGQUJ5dGVjb2RlQ29tcGlsZXIg
Y29tcGlsZXIoZHVtbXlERkEsIGJ5dGVjb2RlKTsKLSAgICAgICAgY29tcGlsZXIuY29tcGlsZSgp
OwotICAgICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhieXRlY29kZSwgYnl0ZWNvZGUuY2FwYWNp
dHkoKSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgICAgIGNsaWVudC53cml0ZUZpbHRlcnNXaXRo
Q29uZGl0aW9uc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKLSAgICB9Ci0gICAgTE9HX0xB
UkdFX1NUUlVDVFVSRVModW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zLCB1bml2ZXJzYWxB
Y3Rpb25zV2l0aENvbmRpdGlvbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25lZCkpOwotICAg
IHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucy5jbGVhcigpOwotCi0gICAgY29uZGl0aW9u
RmlsdGVycy5wcm9jZXNzTkZBcyhtYXhORkFTaXplLCBbJl0oTkZBJiYgbmZhKSB7Ci0jaWYgQ09O
VEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi0gICAgICAgIGRhdGFMb2dG
KCJjb25kaXRpb25GaWx0ZXJzIE5GQVxuIik7Ci0gICAgICAgIG5mYS5kZWJ1Z1ByaW50RG90KCk7
Ci0jZW5kaWYKLSAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMobmZhLCBuZmEubWVtb3J5VXNl
ZCgpKTsKLSAgICAgICAgREZBIGRmYSA9IE5GQVRvREZBOjpjb252ZXJ0KG5mYSk7Ci0jaWYgQ09O
VEVOVF9FWFRFTlNJT05TX1NUQVRFX01BQ0hJTkVfREVCVUdHSU5HCi0gICAgICAgIGRhdGFMb2dG
KCJjb25kaXRpb25GaWx0ZXJzIERGQVxuIik7Ci0gICAgICAgIGRmYS5kZWJ1Z1ByaW50RG90KCk7
Ci0jZW5kaWYKLSAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoZGZhLCBkZmEubWVtb3J5VXNl
ZCgpKTsKLSAgICAgICAgLy8gTWluaW1pemluZyB0aGlzIERGQSB3b3VsZCBub3QgYmUgZWZmZWN0
aXZlIGJlY2F1c2UgYWxsIGFjdGlvbnMgYXJlIHVuaXF1ZQotICAgICAgICAvLyBhbmQgYmVjYXVz
ZSBvZiB0aGUgdHJlZS1saWtlIHN0cnVjdHVyZSBvZiB0aGlzIERGQS4KLSAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghZGZhLm5vZGVzW2RmYS5yb290XS5oYXNBY3Rpb25zKCksICJUaGVyZSBz
aG91bGQgbm90IGJlIGFueSBjb25kaXRpb25zIHRoYXQgbWF0Y2ggZXZlcnl0aGluZy4iKTsKLQot
ICAgICAgICBWZWN0b3I8REZBQnl0ZWNvZGU+IGJ5dGVjb2RlOwotICAgICAgICBERkFCeXRlY29k
ZUNvbXBpbGVyIGNvbXBpbGVyKGRmYSwgYnl0ZWNvZGUpOwotICAgICAgICBjb21waWxlci5jb21w
aWxlKCk7Ci0gICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGJ5dGVjb2RlLCBieXRlY29kZS5j
YXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ4X3QpKTsKLSAgICAgICAgY2xpZW50LndyaXRlQ29uZGl0
aW9uZWRGaWx0ZXJzQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOworICAgIGNvbXBpbGVUb0J5
dGVjb2RlKFdURk1vdmUodG9wVVJMRmlsdGVycyksIFdURk1vdmUodW5pdmVyc2FsVG9wVVJMQWN0
aW9ucyksIFsmXShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIHsKKyAgICAgICAgY2xp
ZW50LndyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKICAgICB9
KTsKLSAgICBBU1NFUlQoY29uZGl0aW9uRmlsdGVycy5pc0VtcHR5KCkpOwogICAgIAogI2lmIENP
TlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKICAgICBkb3VibGUgdG90YWxO
RkFUb0J5dGVDb2RlQnVpbGRUaW1lRW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
Q29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29u
dGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50KCkgeyB9CiAgICAgCiAgICAgLy8gRnVuY3Rp
b25zIHNob3VsZCBiZSBjYWxsZWQgaW4gdGhpcyBvcmRlci4gQWxsIGV4Y2VwdCB3cml0ZUFjdGlv
bnMgYW5kIGZpbmFsaXplIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRob3VnaC4KLSAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPFNlcmlhbGl6ZWRB
Y3Rpb25CeXRlPiYmLCBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB3cml0ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3Rv
cjxERkFCeXRlY29kZT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUZpbHRlcnNXaXRo
Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB3cml0ZUNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29k
ZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvcFVSTEZpbHRlcnNCeXRlY29kZShW
ZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoKSA9
IDA7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAJKHJldmlzaW9uIDIxMzUzMykKKysr
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEzICs3OCwxNSBAQCBjb25zdCBzdGQ6OmVycm9yX2Nh
dGVnb3J5JiBjb250ZW50RXh0ZW5zCiAgICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25F
cnJvcjo6SlNPTkludmFsaWRSZWdleDoKICAgICAgICAgICAgICAgICByZXR1cm4gIkludmFsaWQg
b3IgdW5zdXBwb3J0ZWQgcmVndWxhciBleHByZXNzaW9uLiI7CiAgICAgICAgICAgICBjYXNlIENv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0OgotICAgICAgICAg
ICAgICAgIHJldHVybiAiSW52YWxpZCBsaXN0IG9mIGlmLWRvbWFpbiBvciB1bmxlc3MtZG9tYWlu
IGNvbmRpdGlvbnMuIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkludmFsaWQgbGlzdCBvZiBp
Zi1kb21haW4sIHVubGVzcy1kb21haW4sIGlmLXRvcC11cmwsIG9yIHVubGVzcy10b3AtdXJsIGNv
bmRpdGlvbnMuIjsKICAgICAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09O
VG9vTWFueVJ1bGVzOgogICAgICAgICAgICAgICAgIHJldHVybiAiVG9vIG1hbnkgcnVsZXMgaW4g
SlNPTiBhcnJheS4iOwogICAgICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpT
T05Eb21haW5Ob3RMb3dlckNhc2VBU0NJSToKICAgICAgICAgICAgICAgICByZXR1cm4gIkRvbWFp
bnMgbXVzdCBiZSBsb3dlciBjYXNlIEFTQ0lJLiBVc2UgcHVueWNvZGUgdG8gZW5jb2RlIG5vbi1B
U0NJSSBjaGFyYWN0ZXJzLiI7CiAgICAgICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25FcnJv
cjo6SlNPTk11bHRpcGxlQ29uZGl0aW9uczoKLSAgICAgICAgICAgICAgICByZXR1cm4gIkEgdHJp
Z2dlciBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiAoaWYtZG9tYWluIG9yIHVu
bGVzcy1kb21haW4pIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkEgdHJpZ2dlciBjYW5ub3Qg
aGF2ZSBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiAoaWYtZG9tYWluLCB1bmxlc3MtZG9tYWluLCBp
Zi10b3AtdXJsLCBvciB1bmxlc3MtdG9wLXVybCkiOworICAgICAgICAgICAgY2FzZSBDb250ZW50
RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub3BVUkxBbmREb21haW5Db25kaXRpb25zOgorICAgICAgICAg
ICAgICAgIHJldHVybiAiQSBsaXN0IGNhbm5vdCBoYXZlIGlmLWRvbWFpbiBhbmQgdW5sZXNzLWRv
bWFpbiBtaXhlZCB3aXRoIGlmLXRvcC11cmwgYW5kIHVubGVzcy10b3AtdXJsIjsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
RXJyb3IuaAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUy
LDcgQEAgZW51bSBjbGFzcyBDb250ZW50RXh0ZW5zaW9uRXJyb3IgewogICAgIEpTT05JbnZhbGlk
Q29uZGl0aW9uTGlzdCwKICAgICBKU09ORG9tYWluTm90TG93ZXJDYXNlQVNDSUksCiAgICAgSlNP
Tk11bHRpcGxlQ29uZGl0aW9ucywKKyAgICBKU09OVG9wVVJMQW5kRG9tYWluQ29uZGl0aW9ucywK
ICAgICBKU09OVG9vTWFueVJ1bGVzLAogICAgIAogICAgIEpTT05JbnZhbGlkQWN0aW9uLApJbmRl
eDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblBhcnNlci5jcHAJKHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTMsNiArMTUzLDEwIEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6
OmVycm9yX2NvZGUKICAgICBpZiAodXJsRmlsdGVyQ2FzZVZhbHVlICYmICFzY29wZS5leGNlcHRp
b24oKSAmJiB1cmxGaWx0ZXJDYXNlVmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAgIHRyaWdnZXIu
dXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlID0gdXJsRmlsdGVyQ2FzZVZhbHVlLnRvQm9vbGVhbigm
ZXhlYyk7CiAKKyAgICBjb25zdCBKU1ZhbHVlIHRvcFVSTEZpbHRlckNhc2VWYWx1ZSA9IHRyaWdn
ZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZleGVjLCAidG9wLXVy
bC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUiKSk7CisgICAgaWYgKHRvcFVSTEZpbHRlckNhc2VW
YWx1ZSAmJiAhc2NvcGUuZXhjZXB0aW9uKCkgJiYgdG9wVVJMRmlsdGVyQ2FzZVZhbHVlLmlzQm9v
bGVhbigpKQorICAgICAgICB0cmlnZ2VyLnRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9
IHRvcFVSTEZpbHRlckNhc2VWYWx1ZS50b0Jvb2xlYW4oJmV4ZWMpOworCiAgICAgY29uc3QgSlNW
YWx1ZSByZXNvdXJjZVR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZleGVjLCAicmVzb3VyY2UtdHlwZSIpKTsKICAgICBpZiAoIXNjb3Bl
LmV4Y2VwdGlvbigpICYmIHJlc291cmNlVHlwZVZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAg
YXV0byB0eXBlRmxhZ3NFcnJvciA9IGdldFR5cGVGbGFncyhleGVjLCByZXNvdXJjZVR5cGVWYWx1
ZSwgdHJpZ2dlci5mbGFncywgcmVhZFJlc291cmNlVHlwZSk7CkBAIC0xOTYsNiArMjAwLDM0IEBA
IHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGUKICAgICB9IGVsc2UgaWYg
KCF1bmxlc3NEb21haW5WYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZENvbmRpdGlvbkxpc3Qp
OwogCisgICAgY29uc3QgSlNWYWx1ZSBpZlRvcFVSTFZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQo
JmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJpZi10b3AtdXJsIikpOworICAg
IGlmICghc2NvcGUuZXhjZXB0aW9uKCkgJiYgaWZUb3BVUkxWYWx1ZS5pc09iamVjdCgpKSB7Cisg
ICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvblR5cGUgIT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlw
ZTo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5z
aW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOworICAgICAgICBhdXRvIGlmVG9wVVJM
ID0gZ2V0U3RyaW5nTGlzdChleGVjLCBhc09iamVjdChpZlRvcFVSTFZhbHVlKSk7CisgICAgICAg
IGlmICghaWZUb3BVUkwuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChpZlRvcFVSTC5lcnJvcigpKTsKKyAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RG
TW92ZShpZlRvcFVSTC52YWx1ZSgpKTsKKyAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9ucy5p
c0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVu
c2lvbkVycm9yOjpKU09OSW52YWxpZENvbmRpdGlvbkxpc3QpOworICAgICAgICB0cmlnZ2VyLmNv
bmRpdGlvblR5cGUgPSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpJZlRvcFVSTDsKKyAgICB9IGVs
c2UgaWYgKCFpZlRvcFVSTFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlz
dCk7CisKKyAgICBjb25zdCBKU1ZhbHVlIHVubGVzc1RvcFVSTFZhbHVlID0gdHJpZ2dlck9iamVj
dC5nZXQoJmV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJ1bmxlc3MtdG9wLXVy
bCIpKTsKKyAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpICYmIHVubGVzc1RvcFVSTFZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9uVHlwZSAhPSBUcmlnZ2Vy
OjpDb25kaXRpb25UeXBlOjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9ucyk7CisgICAgICAg
IGF1dG8gdW5sZXNzVG9wVVJMID0gZ2V0U3RyaW5nTGlzdChleGVjLCBhc09iamVjdCh1bmxlc3NU
b3BVUkxWYWx1ZSkpOworICAgICAgICBpZiAoIXVubGVzc1RvcFVSTC5oYXNWYWx1ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHVubGVzc1RvcFVSTC5lcnJvcigpKTsKKyAg
ICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZSh1bmxlc3NUb3BVUkwudmFsdWUoKSk7
CisgICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRD
b25kaXRpb25MaXN0KTsKKyAgICAgICAgdHJpZ2dlci5jb25kaXRpb25UeXBlID0gVHJpZ2dlcjo6
Q29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJMOworICAgIH0gZWxzZSBpZiAoIXVubGVzc1RvcFVS
TFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250
ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdCk7CisKICAgICByZXR1
cm4gV1RGTW92ZSh0cmlnZ2VyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCShyZXZpc2lvbiAy
MTM1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNyArNDMsMjMgQEAgbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zIHsKIHN0cnVjdCBUcmlnZ2VyIHsKICAgICBTdHJpbmcgdXJsRmlsdGVy
OwogICAgIGJvb2wgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlIHsgZmFsc2UgfTsKKyAgICBib29s
IHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSB7IGZhbHNlIH07CiAgICAgUmVzb3VyY2VG
bGFncyBmbGFncyB7IDAgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb25kaXRpb25zOwogICAgIGVu
dW0gY2xhc3MgQ29uZGl0aW9uVHlwZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIElmRG9tYWlu
LAogICAgICAgICBVbmxlc3NEb21haW4sCi0gICAgfSBjb25kaXRpb25UeXBlIHsgQ29uZGl0aW9u
VHlwZTo6Tm9uZSB9OworICAgICAgICBJZlRvcFVSTCwKKyAgICAgICAgVW5sZXNzVG9wVVJMLAor
ICAgIH07CisgICAgQ29uZGl0aW9uVHlwZSBjb25kaXRpb25UeXBlIHsgQ29uZGl0aW9uVHlwZTo6
Tm9uZSB9OwogCiAgICAgflRyaWdnZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbmRpdGlv
bnMuaXNFbXB0eSgpID09IChjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6Ok5vbmUpKTsK
KyAgICAgICAgaWYgKHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSkKKyAgICAgICAgICAg
IEFTU0VSVChjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6OklmVG9wVVJMIHx8IGNvbmRp
dGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJMKTsKICAgICB9CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCShyZXZp
c2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIFZl
Y3RvcjxBY3Rpb24+IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDoKICAgICAgICAgCiAgICAgICAg
IFVSTCB0b3BVUkwgPSByZXNvdXJjZUxvYWRJbmZvLm1haW5Eb2N1bWVudFVSTDsKICAgICAgICAg
REZBQnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0aW9uc0ludGVycHJldGVyKGNvbXBpbGVk
RXh0ZW5zaW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCksIGNvbXBpbGVkRXh0ZW5z
aW9uLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICBERkFC
eXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIHdpdGhDb25kaXRpb25zQWN0aW9ucyA9IHdpdGhD
b25kaXRpb25zSW50ZXJwcmV0ZXIuaW50ZXJwcmV0V2l0aENvbmRpdGlvbnModXJsQ1N0cmluZywg
ZmxhZ3MsIGNvbnRlbnRFeHRlbnNpb24tPmNhY2hlZENvbmRpdGlvbmVkQWN0aW9ucyh0b3BVUkwp
KTsKKyAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyB3aXRoQ29uZGl0aW9u
c0FjdGlvbnMgPSB3aXRoQ29uZGl0aW9uc0ludGVycHJldGVyLmludGVycHJldFdpdGhDb25kaXRp
b25zKHVybENTdHJpbmcsIGZsYWdzLCBjb250ZW50RXh0ZW5zaW9uLT50b3BVUkxBY3Rpb25zKHRv
cFVSTCkpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFj
dGlvbnMgPSBjb21waWxlZEV4dGVuc2lvbi5hY3Rpb25zKCk7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGFjdGlvbnNMZW5ndGggPSBjb21waWxlZEV4dGVuc2lvbi5hY3Rpb25zTGVuZ3RoKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9E
RkFCeXRlY29kZUludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBERkFCeXRlY29kZUludGVycHJldGVyOjpp
bnRlcnByZXRBcAogICAgIEFTU0VSVChnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBtX2J5dGVj
b2RlTGVuZ3RoLCBwcm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uCiAgICAgICAgIHx8IGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIG1fYnl0ZWNv
ZGVMZW5ndGgsIHByb2dyYW1Db3VudGVyKSA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBl
bmRBY3Rpb25XaXRoSWZDb25kaXRpb24pOwogICAgIHVpbnQ2NF90IGFjdGlvbiA9IChpZkNvbmRp
dGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGdldEJp
dHM8dWludDMyX3Q+KG1fYnl0ZWNvZGUsIG1fYnl0ZWNvZGVMZW5ndGgsIHByb2dyYW1Db3VudGVy
ICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pKSk7Ci0gICAgaWYgKCFtX2NvbmRpdGlv
bkFjdGlvbnMgfHwgbWF0Y2hlc0NvbmRpdGlvbihhY3Rpb24sICptX2NvbmRpdGlvbkFjdGlvbnMp
KQorICAgIGlmICghbV90b3BVUkxBY3Rpb25zIHx8IG1hdGNoZXNDb25kaXRpb24oYWN0aW9uLCAq
bV90b3BVUkxBY3Rpb25zKSkKICAgICAgICAgYWN0aW9ucy5hZGQoYWN0aW9uKTsKICAgICAKICAg
ICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRzKERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBE
RkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRUZQogICAgIAogICAgIGlmIChsb2FkVHlw
ZU1hdGNoZXMgJiYgcmVzb3VyY2VUeXBlTWF0Y2hlcykgewogICAgICAgICB1aW50NjRfdCBhY3Rp
b25BbmRGbGFncyA9IChpZkNvbmRpdGlvbiA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihmbGFnc1RvQ2hlY2spIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihnZXRCaXRzPHVpbnQzMl90PihtX2J5dGVjb2RlLCBtX2J5dGVjb2RlTGVuZ3RoLCBwcm9n
cmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSArIHNpemVvZih1aW50
MTZfdCkpKTsKLSAgICAgICAgaWYgKCFtX2NvbmRpdGlvbkFjdGlvbnMgfHwgbWF0Y2hlc0NvbmRp
dGlvbihhY3Rpb25BbmRGbGFncywgKm1fY29uZGl0aW9uQWN0aW9ucykpCisgICAgICAgIGlmICgh
bV90b3BVUkxBY3Rpb25zIHx8IG1hdGNoZXNDb25kaXRpb24oYWN0aW9uQW5kRmxhZ3MsICptX3Rv
cFVSTEFjdGlvbnMpKQogICAgICAgICAgICAgYWN0aW9ucy5hZGQoYWN0aW9uQW5kRmxhZ3MpOwog
ICAgIH0KICAgICBwcm9ncmFtQ291bnRlciArPSBpbnN0cnVjdGlvblNpemVXaXRoQXJndW1lbnRz
KERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbik7CkBAIC0x
NjksMTIgKzE2OSwxMiBAQCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIERGQUJ5dGVj
CiAgICAgcmV0dXJuIGFjdGlvbnM7CiB9CiAgICAgCi1ERkFCeXRlY29kZUludGVycHJldGVyOjpB
Y3Rpb25zIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFdpdGhDb25kaXRpb25zKGNv
bnN0IENTdHJpbmcmIHVybENTdHJpbmcsIHVpbnQxNl90IGZsYWdzLCBjb25zdCBERkFCeXRlY29k
ZUludGVycHJldGVyOjpBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKQorREZBQnl0ZWNvZGVJbnRl
cnByZXRlcjo6QWN0aW9ucyBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRXaXRoQ29u
ZGl0aW9ucyhjb25zdCBDU3RyaW5nJiB1cmxDU3RyaW5nLCB1aW50MTZfdCBmbGFncywgY29uc3Qg
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgdG9wVVJMQWN0aW9ucykKIHsKLSAgICBB
U1NFUlQoIW1fY29uZGl0aW9uQWN0aW9ucyk7Ci0gICAgbV9jb25kaXRpb25BY3Rpb25zID0gJmNv
bmRpdGlvbkFjdGlvbnM7CisgICAgQVNTRVJUKCFtX3RvcFVSTEFjdGlvbnMpOworICAgIG1fdG9w
VVJMQWN0aW9ucyA9ICZ0b3BVUkxBY3Rpb25zOwogICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6
OkFjdGlvbnMgYWN0aW9ucyA9IGludGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7Ci0gICAgbV9j
b25kaXRpb25BY3Rpb25zID0gbnVsbHB0cjsKKyAgICBtX3RvcFVSTEFjdGlvbnMgPSBudWxscHRy
OwogICAgIHJldHVybiBhY3Rpb25zOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCShyZXZp
c2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRl
Y29kZUludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0
ZToKIAogICAgIGNvbnN0IERGQUJ5dGVjb2RlKiBtX2J5dGVjb2RlOwogICAgIGNvbnN0IHVuc2ln
bmVkIG1fYnl0ZWNvZGVMZW5ndGg7Ci0gICAgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6
QWN0aW9ucyogbV9jb25kaXRpb25BY3Rpb25zIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMqIG1fdG9wVVJMQWN0aW9ucyB7IG51bGxwdHIgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zICAgIApJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTctMDMtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBJ
bnRyb2R1Y2UgaWYtdG9wLXVybCBhbmQgdW5sZXNzLXRvcC11cmwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBjb25kaXRpb25lZEZpbHRlcnMg
dG8gdG9wVVJMRmlsdGVycyB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgdGhlIGZp
bHRlcnMKKyAgICAgICAgdGhhdCBhcmUgcnVuIG9uIHRoZSB0b3AgVVJMLCBhbmQgcG9zc2libHkg
anVzdCB0aGUgZG9tYWluIG9mIHRoZSB0b3AgdXJsLgorICAgICAgICBJIHdhcyBhIGJpdCB0b28g
YWdncmVzc2l2ZSB3aGVuIHJlbmFtaW5nIGRvbWFpbiogdG8gY29uZGl0aW9uKiBpbiByMjEzNTMz
LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uOjp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21w
aWxlZENvbnRlbnRFeHRlbnNpb246OnRvcFVSTEZpbHRlcnNCeXRlY29kZUxlbmd0aCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y29uZGl0aW9uZWRGaWx0
ZXJzQnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb246OmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOjplbmNvZGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGE6OldlYkNvbXBpbGVkQ29u
dGVudEV4dGVuc2lvbkRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmVuY29kZUNvbnRlbnRFeHRlbnNp
b25NZXRhRGF0YSk6CisgICAgICAgIChBUEk6OmRlY29kZUNvbnRlbnRFeHRlbnNpb25NZXRhRGF0
YSk6CisgICAgICAgIChBUEk6OmNvbXBpbGVkVG9GaWxlKToKKyAgICAgICAgKEFQSTo6Y3JlYXRl
RXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6aW52
YWxpZGF0ZUNvbnRlbnRFeHRlbnNpb25WZXJzaW9uKToKKyAgICAgICAgKEFQSTo6dXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZUVycm9yQ2F0ZWdvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICBJbmNyZW1lbnQgQ3VycmVu
dENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbiBiZWNhdXNlIHdlIGhhdmUgY2hhbmdlZCB0aGUg
Zm9ybWF0IG9mIHRoZSBiaW5hcnkgb24gZGlzay4KKyAgICAgICAgV2Ugb25seSBhZGRlZCA0IGJ5
dGVzLCBidXQgdGhhdCdzIGJpbmFyeSBpbmNvbXBhdGlibGUgYW5kIHJlcXVpcmVzIHJlLWNvbXBp
bGluZyBhbnkgZXhpc3RpbmcgY29udGVudCBleHRlbnNpb25zLgorCiAyMDE3LTAzLTA3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NvbnRl
bnQgRXh0ZW5zaW9uc10gUmVuYW1lICJEb21haW4iIHRvICJDb25kaXRpb24iIHdoZXJlIGFwcHJv
cHJpYXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDExIEBAIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6fldlYkNvbXBp
bGUKIHsKIH0KIAorYm9vbCBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNvbmRpdGlvbnNB
cHBseU9ubHlUb0RvbWFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9kYXRhLmRhdGEtPmRhdGEo
KSkgKyBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KTsKK30KKwogY29u
c3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBXZWJDb21waWxlZENv
bnRlbnRFeHRlbnNpb246OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkRGQUJ5dGVjb2RlKj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CkBAIC02NCwxNCArNjksMTQgQEAgdW5zaWdu
ZWQgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpmaQogICAgIHJldHVybiBtX2RhdGEuZmls
dGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogfQogCi1jb25zdCBXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6
Y29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdAorY29uc3QgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OnRv
cFVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSo+KG1fZGF0YS5kYXRh
LT5kYXRhKCkpICsgbV9kYXRhLmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Qnl0ZWNvZGUqPihtX2RhdGEuZGF0YS0+ZGF0YSgpKSArIG1fZGF0YS50b3BVUkxGaWx0ZXJzQnl0
ZWNvZGVPZmZzZXQ7CiB9CiAKLXVuc2lnbmVkIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6
Y29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdAordW5zaWduZWQgV2ViQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uOjp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplOwor
ICAgIHJldHVybiBtX2RhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKIH0KIAogY29uc3Qg
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlKiBXZWJDb21w
aWxlZENvbnRlbnRFeHRlbnNpb246OmFjdGlvbnMoKSBjb25zdApJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaAkocmV2aXNp
b24gMjEzNTMzKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4
dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw5IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUq
IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWdu
ZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbDsKLSAg
ICBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGNvbmRpdGlv
bmVkRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7Ci0gICAgdW5zaWduZWQgY29uZGl0aW9u
ZWRGaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIHRvcFVSTEZpbHRlcnNCeXRlY29kZSgp
IGNvbnN0IGZpbmFsOworICAgIHVuc2lnbmVkIHRvcFVSTEZpbHRlcnNCeXRlY29kZUxlbmd0aCgp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKCkgY29u
c3QgZmluYWw7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlNl
cmlhbGl6ZWRBY3Rpb25CeXRlKiBhY3Rpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQg
YWN0aW9uc0xlbmd0aCgpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcAkocmV2
aXNpb24gMjEzNTMzKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIHZvaWQg
V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YTo6ZW4KICAgICBlbmNvZGVyIDw8IGZpbHRl
cnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNvZGVyIDw8IGZpbHRlcnNX
aXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwogICAgIGVuY29kZXIgPDwgZmlsdGVyc1dpdGhD
b25kaXRpb25zQnl0ZWNvZGVTaXplOwotICAgIGVuY29kZXIgPDwgY29uZGl0aW9uZWRGaWx0ZXJz
Qnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZW5jb2RlciA8PCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29k
ZVNpemU7CisgICAgZW5jb2RlciA8PCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CisgICAg
ZW5jb2RlciA8PCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogfQogCiBib29sIFdlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdl
YkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmIGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEpCkBAIC02Nyw5ICs2Nyw5IEBAIGJvb2wgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0
YTo6ZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNp
emUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb21w
aWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlT2Zmc2V0
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEu
dG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5jb25kaXRp
b25lZEZpbHRlcnNCeXRlY29kZVNpemUpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uRGF0YS50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmgJ
KHJldmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENv
bnRlbnRFeHRlbnNpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE3ICs0MiwxOCBAQCBj
bGFzcyBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIHsKIHB1YmxpYzoKICAgICBXZWJD
b21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKCkgPSBkZWZhdWx0OwogCi0gICAgV2ViQ29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uRGF0YShSZWZQdHI8U2hhcmVkTWVtb3J5PiYmIGRhdGEsIE5ldHdv
cmtDYWNoZTo6RGF0YSBmaWxlRGF0YSwgdW5zaWduZWQgYWN0aW9uc09mZnNldCwgdW5zaWduZWQg
YWN0aW9uc1NpemUsIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zm
c2V0LCB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUsIHVuc2ln
bmVkIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBmaWx0ZXJz
V2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUsIHVuc2lnbmVkIGNvbmRpdGlvbmVkRmlsdGVyc0J5
dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUpCisg
ICAgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YShSZWZQdHI8U2hhcmVkTWVtb3J5PiYm
IGRhdGEsIE5ldHdvcmtDYWNoZTo6RGF0YSBmaWxlRGF0YSwgdW5zaWduZWQgY29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluT2Zmc2V0LCB1bnNpZ25lZCBhY3Rpb25zT2Zmc2V0LCB1bnNpZ25lZCBh
Y3Rpb25zU2l6ZSwgdW5zaWduZWQgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZz
ZXQsIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSwgdW5zaWdu
ZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGZpbHRlcnNX
aXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSwgdW5zaWduZWQgdG9wVVJMRmlsdGVyc0J5dGVjb2Rl
T2Zmc2V0LCB1bnNpZ25lZCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKQogICAgICAgICA6IGRh
dGEoV1RGTW92ZShkYXRhKSkKICAgICAgICAgLCBmaWxlRGF0YShmaWxlRGF0YSkKKyAgICAgICAg
LCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQoY29uZGl0aW9uc0FwcGx5T25seVRv
RG9tYWluT2Zmc2V0KQogICAgICAgICAsIGFjdGlvbnNPZmZzZXQoYWN0aW9uc09mZnNldCkKICAg
ICAgICAgLCBhY3Rpb25zU2l6ZShhY3Rpb25zU2l6ZSkKICAgICAgICAgLCBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldChmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZU9mZnNldCkKICAgICAgICAgLCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUo
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKQogICAgICAgICAsIGZpbHRlcnNX
aXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0KGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0KQogICAgICAgICAsIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZShmaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpCi0gICAgICAgICwgY29uZGl0aW9uZWRGaWx0
ZXJzQnl0ZWNvZGVPZmZzZXQoY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCi0gICAg
ICAgICwgY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKGNvbmRpdGlvbmVkRmlsdGVyc0J5
dGVjb2RlU2l6ZSkKKyAgICAgICAgLCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQodG9wVVJM
RmlsdGVyc0J5dGVjb2RlT2Zmc2V0KQorICAgICAgICAsIHRvcFVSTEZpbHRlcnNCeXRlY29kZVNp
emUodG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSkKICAgICB7CiAgICAgfQogCkBAIC02MSwxNCAr
NjIsMTUgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gZGF0YTsKICAgICBO
ZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGE7CisgICAgdW5zaWduZWQgY29uZGl0aW9uc0FwcGx5
T25seVRvRG9tYWluT2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIGFjdGlvbnNPZmZzZXQgeyAw
IH07CiAgICAgdW5zaWduZWQgYWN0aW9uc1NpemUgeyAwIH07CiAgICAgdW5zaWduZWQgZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIHVuc2lnbmVkIGZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIGZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSB7IDAgfTsKLSAgICB1bnNpZ25lZCBjb25k
aXRpb25lZEZpbHRlcnNCeXRlY29kZU9mZnNldCB7IDAgfTsKLSAgICB1bnNpZ25lZCBjb25kaXRp
b25lZEZpbHRlcnNCeXRlY29kZVNpemUgeyAwIH07CisgICAgdW5zaWduZWQgdG9wVVJMRmlsdGVy
c0J5dGVjb2RlT2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIHRvcFVSTEZpbHRlcnNCeXRlY29k
ZVNpemUgeyAwIH07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAJKHJl
dmlzaW9uIDIxMzUzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEzICs3OSwxOCBA
QCBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlLCAiQ29udGVudEV4dGVuc2lvbi0i
ICsgV2ViQ29yZTo6ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpOwogfQogCi1jb25zdCBz
aXplX3QgQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplID0gc2l6ZW9mKHVpbnQzMl90KSAr
IDQgKiBzaXplb2YodWludDY0X3QpOworLy8gVGhlIHNpemUgYW5kIG9mZnNldCBvZiB0aGUgZGVu
c2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2YgYW5kIG9mZnNldG9mLCB3
aGljaCB3b3VsZAorLy8gcmVwcmVzZW50IHRoZSBzaXplIGFuZCBvZmZzZXQgb2YgdGhlIHN0cnVj
dHVyZSBpbiBtZW1vcnksIHBvc3NpYmx5IHdpdGggY29tcGlsZXItYWRkZWQgcGFkZGluZy4KK2Nv
bnN0IHNpemVfdCBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUgPSAyICogc2l6ZW9mKHVp
bnQzMl90KSArIDQgKiBzaXplb2YodWludDY0X3QpOworY29uc3Qgc2l6ZV90IENvbmRpdGlvbnNB
cHBseU9ubHlUb0RvbWFpbk9mZnNldCA9IHNpemVvZih1aW50MzJfdCkgKyA0ICogc2l6ZW9mKHVp
bnQ2NF90KTsKKwogc3RydWN0IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSB7CiAgICAgdWludDMy
X3QgdmVyc2lvbiB7IFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkN1cnJlbnRDb250ZW50RXh0
ZW5zaW9uRmlsZVZlcnNpb24gfTsKICAgICB1aW50NjRfdCBhY3Rpb25zU2l6ZSB7IDAgfTsKICAg
ICB1aW50NjRfdCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUgeyAwIH07CiAg
ICAgdWludDY0X3QgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplIHsgMCB9OwogICAg
IHVpbnQ2NF90IGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSB7IDAgfTsKKyAgICB1aW50
MzJfdCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4geyBmYWxzZSB9OwogICAgIAogICAgIHNp
emVfdCBmaWxlU2l6ZSgpIGNvbnN0CiAgICAgewpAQCAtMTA2LDYgKzExMSw3IEBAIHN0YXRpYyBE
YXRhIGVuY29kZUNvbnRlbnRFeHRlbnNpb25NZXRhRGEKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRh
LmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1l
dGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbjsKIAogICAgIEFTU0VSVChlbmNv
ZGVyLmJ1ZmZlclNpemUoKSA9PSBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUpOwogICAg
IHJldHVybiBEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKQEAg
LTEzMSw2ICsxMzcsOCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURh
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWV0YURhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS5jb25kaXRp
b25zQXBwbHlPbmx5VG9Eb21haW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwpAQCAtMTc3
LDkgKzE4NSwxMCBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0CiAg
ICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0
aW9uc0J5dGVjb2RlU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmNvbmRpdGlv
bmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSk7CisgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmNv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0
ZWNvZGU+JiYgYnl0ZWNvZGUpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlv
bkJ5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVy
c0J5dGVjb2RlV3JpdHRlbik7CkBAIC0xODcsMzUgKzE5NiwzNyBAQCBzdGF0aWMgc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGJ5
dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZB
Qnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJz
V2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJzQnl0
ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29k
ZVdyaXR0ZW4gKz0gYnl0ZWNvZGUuc2l6ZSgpOwogICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0
YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICB2b2lkIHdyaXRlQ29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERG
QUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQorICAgICAgICB2b2lkIHdyaXRlVG9wVVJM
RmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuICs9
IGJ5dGVjb2RlLnNpemUoKTsKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUu
ZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgd3Jp
dGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiBhY3Rpb25zKSBvdmVycmlk
ZQorICAgICAgICB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+
JiYgYWN0aW9ucywgYm9vbCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZVdyaXR0ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRoQ29uZGl0aW9u
Qnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJz
Qnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25zV3JpdHRlbik7
CiAgICAgICAgICAgICBtX2FjdGlvbnNXcml0dGVuICs9IGFjdGlvbnMuc2l6ZSgpOworICAgICAg
ICAgICAgbV9jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4gPSBjb25kaXRpb25zQXBwbHlPbmx5
VG9Eb21haW47CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGFjdGlvbnMuZGF0YSgpLCBh
Y3Rpb25zLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2b2lkIGZpbmFs
aXplKCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBmaW5hbGl6ZSgpIGZpbmFsCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1fbWV0YURhdGEuYWN0aW9uc1NpemUgPSBtX2FjdGlvbnNXcml0dGVuOwog
ICAgICAgICAgICAgbV9tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNp
emUgPSBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbjsKICAgICAgICAg
ICAgIG1fbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gbV9maWx0
ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbjsKICAgICAgICAgICAgIG1fbWV0YURhdGEu
Y29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplID0gbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNv
ZGVXcml0dGVuOworICAgICAgICAgICAgbV9tZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9E
b21haW4gPSBtX2NvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbjsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgRGF0YSBoZWFkZXIgPSBlbmNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEobV9t
ZXRhRGF0YSk7CiAgICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYmIFdlYkNvcmU6OnNlZWtG
aWxlKG1fZmlsZUhhbmRsZSwgMGxsLCBXZWJDb3JlOjpGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21C
ZWdpbm5pbmcpID09IC0xKSB7CkBAIC0yNDIsNiArMjUzLDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3Jf
Y29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAgICBzaXplX3QgbV9maWx0ZXJzV2l0aENvbmRp
dGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAgICAgICAgc2l6ZV90IG1fY29uZGl0aW9uRmls
dGVyc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAgICAgICAgc2l6ZV90IG1fYWN0aW9uc1dyaXR0
ZW4geyAwIH07CisgICAgICAgIGJvb2wgbV9jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4geyBm
YWxzZSB9OwogICAgICAgICBib29sIG1fZmlsZUVycm9yIHsgZmFsc2UgfTsKICAgICB9OwogCkBA
IC0yODUsNiArMjk3LDcgQEAgc3RhdGljIFJlZlB0cjxBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9u
PgogICAgIGF1dG8gY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSA9IFdlYktpdDo6V2ViQ29t
cGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSgKICAgICAgICAgV1RGTW92ZShzaGFyZWRNZW1vcnkp
LAogICAgICAgICBmaWxlRGF0YSwKKyAgICAgICAgQ29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWlu
T2Zmc2V0LAogICAgICAgICBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUsCiAgICAgICAg
IG1ldGFEYXRhLmFjdGlvbnNTaXplLAogICAgICAgICBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRl
clNpemUKQEAgLTM4Myw3ICszOTYsNyBAQCB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6
OmludmFsaWRhCiAgICAgYXV0byBmaWxlID0gV2ViQ29yZTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQ
YXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKICAg
ICBpZiAoZmlsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAg
ICByZXR1cm47Ci0gICAgQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhIGludmFsaWRIZWFkZXIgPSB7
MCwgMCwgMCwgMCwgMH07CisgICAgQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhIGludmFsaWRIZWFk
ZXI7CiAgICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjp3cml0ZVRvRmlsZShmaWxlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZh
bGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRl
biA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxl
KTsKQEAgLTM5MiwxMiArNDA1LDEyIEBAIHZvaWQgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZTo6
aW52YWxpZGEKIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkmIHVzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVFcnJvckNhdGVnb3J5KCkKIHsKICAgICBjbGFzcyBVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlRXJyb3JDYXRlZ29yeSA6IHB1YmxpYyBzdGQ6OmVycm9yX2NhdGVnb3J5IHsKLSAgICAgICAg
Y29uc3QgY2hhciogbmFtZSgpIGNvbnN0IG5vZXhjZXB0IG92ZXJyaWRlCisgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWUoKSBjb25zdCBub2V4Y2VwdCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gInVzZXIgY29udGVudCBleHRlbnNpb24gc3RvcmUiOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZShpbnQgZXJyb3JDb2RlKSBjb25zdCBvdmVycmlkZQor
ICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlKGludCBlcnJvckNvZGUpIGNvbnN0IGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZTo6RXJyb3I+KGVycm9yQ29kZSkpIHsKICAgICAgICAgICAgIGNhc2UgVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZTo6RXJyb3I6Okxvb2t1cEZhaWxlZDoKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZS5oCShyZXZpc2lvbiAyMTM1MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGhpcyBzaG91bGQgYmUgaW5jcmVt
ZW50ZWQgZXZlcnkgdGltZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIG1hZGUgdG8gdGhlIGJ5dGVj
b2RlLCBmaWxlIGZvcm1hdCwgZXRjLgogICAgIC8vIHRvIHByZXZlbnQgY3Jhc2hpbmcgd2hpbGUg
bG9hZGluZyBvbGQgZGF0YS4KLSAgICBjb25zdCBzdGF0aWMgdWludDMyX3QgQ3VycmVudENvbnRl
bnRFeHRlbnNpb25GaWxlVmVyc2lvbiA9IDc7CisgICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1
cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA4OwogCiAgICAgc3RhdGljIFVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUmIGRlZmF1bHRTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8VXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZT4gc3RvcmVXaXRoUGF0aChjb25zdCBXVEY6OlN0cmluZyYg
c3RvcmVQYXRoKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxMzY1NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gSW50
cm9kdWNlIGlmLXRvcC11cmwgYW5kIHVubGVzcy10b3AtdXJsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICBBZGQgdGVzdHMgZm9yIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCBuZXcgZmFpbHVy
ZSB0eXBlcy4KKwogMjAxNy0wMy0wOCAgTWF0dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTGV0IGNsaWVudHMgY29udHJvbCBhdXRvcGxheSBxdWlya3Mgd2l0aCB3ZWJzaXRl
IHBvbGljaWVzLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAyMTM1MzMpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw4IEBAIHN0cnVjdCBDb21waWxlZENvbnRlbnRFeHRlbnNp
b25EYXRhIHsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25C
eXRlPiBhY3Rpb25zOwogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+
IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uczsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlPiBmaWx0ZXJzV2l0aENvbmRpdGlvbnM7Ci0gICAgVmVjdG9yPENvbnRlbnRF
eHRlbnNpb25zOjpERkFCeXRlY29kZT4gY29uZGl0aW9uZWRGaWx0ZXJzOworICAgIFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IHRvcFVSTEZpbHRlcnM7CisgICAgYm9vbCBj
b25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4geyBmYWxzZSB9OwogfTsKIAogY2xhc3MgSW5NZW1v
cnlDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQ29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCB7CkBAIC05Niwz
OCArOTcsNDAgQEAgcHVibGljOgogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5hY3Rpb25zLnNpemUo
KSwgMHVsbCk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9u
cy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5maWx0ZXJzV2l0aENvbmRp
dGlvbnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuY29uZGl0aW9uZWRG
aWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLnRvcFVSTEZpbHRl
cnMuc2l6ZSgpLCAwdWxsKTsKICAgICB9CiAKLSAgICB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8
Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMpIGZpbmFs
CisgICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxp
emVkQWN0aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFp
bikgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwogICAgICAg
ICBFWFBFQ1RfRVEobV9kYXRhLmFjdGlvbnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgRVhQRUNU
X0VRKG1fZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKICAgICAg
ICAgRVhQRUNUX0VRKG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsK
LSAgICAgICAgRVhQRUNUX0VRKG1fZGF0YS5jb25kaXRpb25lZEZpbHRlcnMuc2l6ZSgpLCAwdWxs
KTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgMHVsbCk7
CisgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOwogICAgICAg
ICBtX2RhdGEuYWN0aW9ucy5hcHBlbmRWZWN0b3IoYWN0aW9ucyk7CisgICAgICAgIG1fZGF0YS5j
b25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4gPSBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW47
CiAgICAgfQogICAgIAogICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZShWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBm
aW5hbAogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7CiAgICAgICAgIEVY
UEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUoKSwgMHVsbCk7Ci0gICAg
ICAgIEVYUEVDVF9FUShtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLnNpemUoKSwgMHVsbCk7Cisg
ICAgICAgIEVYUEVDVF9FUShtX2RhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAg
ICAgICBtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLmFwcGVuZFZlY3RvcihieXRlY29k
ZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRl
Y29kZShWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBm
aW5hbAogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7Ci0gICAgICAgIEVY
UEVDVF9FUShtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAg
IEVYUEVDVF9FUShtX2RhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgICAgICBt
X2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLmFwcGVuZFZlY3RvcihieXRlY29kZSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgd3JpdGVDb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZShWZWN0b3I8
Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAorICAgIHZv
aWQgd3JpdGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpE
RkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShmaW5hbGl6ZWQpOwotICAgICAgICBtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLmFwcGVuZFZl
Y3RvcihieXRlY29kZSk7CisgICAgICAgIG1fZGF0YS50b3BVUkxGaWx0ZXJzLmFwcGVuZFZlY3Rv
cihieXRlY29kZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZmluYWxpemUoKSBmaW5hbApAQCAt
MTcxLDggKzE3NCw5IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS5maWx0ZXJz
V2l0aG91dENvbmRpdGlvbnMuc2l6ZSgpOyB9CiAgICAgY29uc3QgQ29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuZGF0YSgpOyB9CiAgICAgdW5z
aWduZWQgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUoKTsgfQotICAgIGNvbnN0
IENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNv
ZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEuY29uZGl0aW9uZWRGaWx0ZXJzLmRhdGEo
KTsgfQotICAgIHVuc2lnbmVkIGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmNvbmRpdGlvbmVkRmlsdGVycy5zaXplKCk7IH0KKyAg
ICBjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIHRvcFVSTEZpbHRlcnNCeXRl
Y29kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YS50b3BVUkxGaWx0ZXJzLmRhdGEoKTsg
fQorICAgIHVuc2lnbmVkIHRvcFVSTEZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKTsgfQorICAgIGJvb2wgY29uZGl0
aW9uc0FwcGx5T25seVRvRG9tYWluKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhLmNvbmRp
dGlvbnNBcHBseU9ubHlUb0RvbWFpbjsgfQogCiBwcml2YXRlOgogICAgIEluTWVtb3J5Q29tcGls
ZWRDb250ZW50RXh0ZW5zaW9uKENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmJiBkYXRhKQpA
QCAtNzg4LDcgKzc5Miw3MiBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERvbWFpblRy
aWdnCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDov
L3dlYmtpdC5vcmcvZXhjZXB0LXRoaXMtaWdub3JlLXByZXZpb3VzLXRyaWdnZXItb24tc2NyaXB0
cy5odG1sIiwgUmVzb3VyY2VUeXBlOjpTY3JpcHQpLCB7IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b25UeXBlOjpCbG9ja0Nvb2tpZXMsIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yIH0pOwogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly9ub3R3ZWJraXQub3JnL2V4Y2VwdC10aGlzLWlnbm9yZS1wcmV2
aW91cy10cmlnZ2VyLW9uLXNjcmlwdHMuaHRtbC50ZXN0Lmh0bWwiLCBSZXNvdXJjZVR5cGU6OlNj
cmlwdCksIHsgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrQ29va2llcywgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3IsIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXMgfSk7CiAgICAgdGVzdFJlcXVl
c3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvZXhjZXB0
LXRoaXMtaWdub3JlLXByZXZpb3VzLXRyaWdnZXItb24tc2NyaXB0cy5odG1sLnRlc3QuaHRtbCIs
IFJlc291cmNlVHlwZTo6U2NyaXB0KSwgeyBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tDb29raWVzLCBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5v
bmVTZWxlY3RvciwgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrTG9hZCwgQ29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6OkJsb2NrQ29va2llcyB9KTsKK30KIAorVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBUb3BVUkwpCit7CisgICAgY29uc3QgVmVjdG9yPENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlPiBibG9ja0xvYWQgPSB7IENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQgfTsKKyAgICBjb25zdCBWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU+IGJsb2NrQ29va2llcyA9IHsgQ29udGVudEV4dGVuc2lvbnM6OkFj
dGlvblR5cGU6OkJsb2NrQ29va2llcyB9OworCisgICAgYXV0byBpZlRvcFVSTCA9IG1ha2VCYWNr
ZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJs
LWZpbHRlclwiOlwidGVzdFxcXFwuaHRtbFwiLCBcImlmLXRvcC11cmxcIjpbXCJeaHR0cDovL3dl
Yi4qa2l0Lm9yZ1wiXX19XSIpOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBtYWluRG9jdW1l
bnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAg
ICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtp
dC5vcmcvdGVzdC5ub3RfaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vV0VCS0lULm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tM
b2FkKTsKKyAgICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0
cDovL3dlYmtpdC5vcmcvVEVTVC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3Qo
aWZUb3BVUkwsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJfX2tpdC5vcmcvdGVzdC5o
dG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkwsIG1haW5Eb2N1bWVu
dFJlcXVlc3QoImh0dHA6Ly93ZWJrX19pdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVz
dFJlcXVlc3QoaWZUb3BVUkwsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJfX2tpdC5v
cmcvdGVzdC5ub3RfaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBtYWlu
RG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7
CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL25v
dF93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vd2Via2l0Lm9yZy9ub3RfdGVzdC5odG1s
IiksIGJsb2NrTG9hZCk7CisgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkwsIHN1YlJlc291cmNlUmVx
dWVzdCgiaHR0cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vbm90X3dlYmtp
dC5vcmcvbm90X3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBz
dWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8v
bm90X3dlYmtpdC5vcmcvbm90X3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlm
VG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIs
ICJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVl
c3QoaWZUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5o
dG1sIiwgImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgIHRl
c3RSZXF1ZXN0KGlmVG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3Jn
L3Rlc3QuaHRtbCIsICJodHRwOi8vZXhhbXBsZS5jb20vI2h0dHA6Ly93ZWJraXQub3JnL3Rlc3Qu
aHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGlmVG9wVVJMLCBzdWJSZXNvdXJjZVJlcXVl
c3QoImh0dHA6Ly9leGFtcGxlLmNvbS8jaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0
dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworCisgICAgYXV0byB1bmxl
c3NUb3BVUkwgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcXFxcLmh0bWxcIiwgXCJ1bmxlc3Mt
dG9wLXVybFwiOltcIl5odHRwOi8vd2ViLipraXQub3JnXCJdfX1dIik7CisgICAgdGVzdFJlcXVl
c3QodW5sZXNzVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90
ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly9XRUJLSVQub3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRl
c3RSZXF1ZXN0KHVubGVzc1RvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtp
dC5vcmcvVEVTVC5odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9wVVJMLCBt
YWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lm5vdF9odG1sIiksIHsg
fSk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vd2ViX19raXQub3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVu
bGVzc1RvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtfX2l0Lm9yZy90ZXN0
Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIG1haW5E
b2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJfX2tpdC5vcmcvdGVzdC5ub3RfaHRtbCIpLCB7IH0p
OworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0
cDovL25vdF93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgIHRlc3RSZXF1
ZXN0KHVubGVzc1RvcFVSTCwgc3ViUmVzb3VyY2VSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5v
cmcvdGVzdC5odG1sIiwgImh0dHA6Ly93ZWJraXQub3JnL25vdF90ZXN0Lmh0bWwiKSwgeyB9KTsK
KyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDov
L25vdF93ZWJraXQub3JnL3Rlc3QuaHRtbCIsICJodHRwOi8vbm90X3dlYmtpdC5vcmcvbm90X3Rl
c3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVSTCwgc3Vi
UmVzb3VyY2VSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL25v
dF93ZWJraXQub3JnL25vdF90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0UmVxdWVz
dCh1bmxlc3NUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVz
dC5odG1sIiwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsK
KyAgICB0ZXN0UmVxdWVzdCh1bmxlc3NUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDov
L3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7
IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVzc1RvcFVSTCwgc3ViUmVzb3VyY2VSZXF1ZXN0KCJo
dHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL2V4YW1wbGUuY29tLyNodHRwOi8v
d2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0UmVxdWVzdCh1bmxl
c3NUb3BVUkwsIHN1YlJlc291cmNlUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyNodHRwOi8v
d2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIHsg
fSk7CisKKyAgICBhdXRvIGlmVG9wVVJMTWF0Y2hlc0V2ZXJ5dGhpbmcgPSBtYWtlQmFja2VuZCgi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcInRlc3RcXFxcLmh0bWxcIiwgXCJpZi10b3AtdXJsXCI6W1wiLipcIl19fV0iKTsKKyAg
ICB0ZXN0UmVxdWVzdChpZlRvcFVSTE1hdGNoZXNFdmVyeXRoaW5nLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0
UmVxdWVzdChpZlRvcFVSTE1hdGNoZXNFdmVyeXRoaW5nLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJo
dHRwOi8vd2Via2l0Lm9yZy90ZXN0Lm5vdF9odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3Qo
aWZUb3BVUkxNYXRjaGVzRXZlcnl0aGluZywgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL25v
dF93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgIAorICAgIGF1dG8gdW5s
ZXNzVG9wVVJMTWF0Y2hlc0V2ZXJ5dGhpbmcgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntc
InR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3RcXFxc
Lmh0bWxcIiwgXCJ1bmxlc3MtdG9wLXVybFwiOltcIi4qXCJdfX1dIik7CisgICAgdGVzdFJlcXVl
c3QodW5sZXNzVG9wVVJMTWF0Y2hlc0V2ZXJ5dGhpbmcsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0
dHA6Ly93ZWJraXQub3JnL3Rlc3QuaHRtbCIpLCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KHVubGVz
c1RvcFVSTE1hdGNoZXNFdmVyeXRoaW5nLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Vi
a2l0Lm9yZy90ZXN0Lm5vdF9odG1sIiksIHsgfSk7CisgICAgdGVzdFJlcXVlc3QodW5sZXNzVG9w
VVJMTWF0Y2hlc0V2ZXJ5dGhpbmcsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Vi
a2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKKyAgICAKKyAgICBhdXRvIG1peGVkQ29uZGl0aW9u
cyA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmln
Z2VyXCI6e1widXJsLWZpbHRlclwiOlwidGVzdFxcXFwuaHRtbFwiLCBcImlmLXRvcC11cmxcIjpb
XCJeaHR0cDovL3dlYi4qa2l0Lm9yZ1wiXX19LCIKKyAgICAgICAgIntcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrLWNvb2tpZXNcIn0sXCJ0cmlnZ2VyXCI6e1wicmVzb3VyY2UtdHlwZVwiOltc
ImRvY3VtZW50XCJdLCBcInVybC1maWx0ZXJcIjpcInRlc3RcXFxcLmh0bWxcIiwgXCJ1bmxlc3Mt
dG9wLXVybFwiOltcIl5odHRwOi8vd2ViLipraXQub3JnXCJdfX1dIik7CisgICAgdGVzdFJlcXVl
c3QobWl4ZWRDb25kaXRpb25zLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9y
Zy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0UmVxdWVzdChtaXhlZENvbmRpdGlv
bnMsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZy90ZXN0Lmh0bWwi
KSwgYmxvY2tDb29raWVzKTsKKyAgICB0ZXN0UmVxdWVzdChtaXhlZENvbmRpdGlvbnMsIHN1YlJl
c291cmNlUmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0dHA6Ly9ub3Rf
d2Via2l0Lm9yZyIsIFJlc291cmNlVHlwZTo6RG9jdW1lbnQpLCBibG9ja0Nvb2tpZXMpOworICAg
IHRlc3RSZXF1ZXN0KG1peGVkQ29uZGl0aW9ucywgc3ViUmVzb3VyY2VSZXF1ZXN0KCJodHRwOi8v
d2Via2l0Lm9yZy90ZXN0Lmh0bWwiLCAiaHR0cDovL25vdF93ZWJraXQub3JnIiwgUmVzb3VyY2VU
eXBlOjpJbWFnZSksIHsgfSk7CisKKyAgICBhdXRvIGNhc2VTZW5zaXRpdmUgPSBtYWtlQmFja2Vu
ZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcInRlc3RcXFxcLmh0bWxcIiwgXCJpZi10b3AtdXJsXCI6W1wiXmh0dHA6Ly93ZWIu
KmtpdC5vcmcvdGVzdFwiXSwgXCJ0b3AtdXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZVwiOnRy
dWV9fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChjYXNlU2Vuc2l0aXZlLCBtYWluRG9jdW1lbnRSZXF1
ZXN0KCJodHRwOi8vd2Via2l0Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKKyAgICB0ZXN0
UmVxdWVzdChjYXNlU2Vuc2l0aXZlLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vV0VCS0lU
Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsgLy8gZG9tYWlucyBhcmUgY2Fub25pY2FsaXpl
ZCBiZWZvcmUgcnVubmluZyByZWdleGVzLgorICAgIHRlc3RSZXF1ZXN0KGNhc2VTZW5zaXRpdmUs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL1RFU1QuaHRtbCIpLCB7IH0p
OworCisgICAgYXV0byBjYXNlSW5zZW5zaXRpdmUgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwi
OntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcInRlc3Rc
XFxcLmh0bWxcIiwgXCJpZi10b3AtdXJsXCI6W1wiXmh0dHA6Ly93ZWIuKmtpdC5vcmcvdGVzdFwi
XX19XSIpOworICAgIHRlc3RSZXF1ZXN0KGNhc2VJbnNlbnNpdGl2ZSwgbWFpbkRvY3VtZW50UmVx
dWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIGJsb2NrTG9hZCk7CisgICAgdGVz
dFJlcXVlc3QoY2FzZUluc2Vuc2l0aXZlLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Vi
a2l0Lm9yZy9URVNULmh0bWwiKSwgYmxvY2tMb2FkKTsKIH0KIAogVEVTVF9GKENvbnRlbnRFeHRl
bnNpb25UZXN0LCBNdWx0aXBsZUV4dGVuc2lvbnMpCkBAIC0xMzY0LDYgKzE0MzMsMTcgQEAgVEVT
VF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBJbnZhbGlkSlNPTgogICAgIGNoZWNrQ29tcGlsZXJF
cnJvcigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVy
bC1maWx0ZXJcIjpcIi4qXCIsXCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19XSIsIHsgfSk7CiAg
ICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0s
XCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiW1wifX1dIiwKICAgICAgICAgQ29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRSZWdleCk7CisKKyAg
ICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxc
InRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi1kb21haW5cIjpb
XCJhXCJdLFwidW5sZXNzLWRvbWFpblwiOltcImFcIl19fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKKyAgICBjaGVj
a0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdn
ZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi10b3AtdXJsXCI6W1wiYVwi
XSxcInVubGVzcy10b3AtdXJsXCI6W119fV0iLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKKyAgICBjaGVja0NvbXBpbGVy
RXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi10b3AtdXJsXCI6W1wiYVwiXSxcInVubGVz
cy10b3AtdXJsXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOworICAgIGNoZWNrQ29tcGlsZXJFcnJv
cigiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIndlYmtpdC5vcmdcIixcImlmLWRvbWFpblwiOltcImFcIl0sXCJpZi10b3AtdXJs
XCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOworICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFj
dGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
IndlYmtpdC5vcmdcIixcImlmLXRvcC11cmxcIjpbXSxcInVubGVzcy1kb21haW5cIjpbXCJhXCJd
fX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRp
cGxlQ29uZGl0aW9ucyk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1wi
dHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9y
Z1wiLFwiaWYtdG9wLXVybFwiOltcImFcIl0sXCJpZi1kb21haW5cIjpbXCJhXCJdfX1dIiwgQ29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0
aW9ucyk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwi
YmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYt
dG9wLXVybFwiOltcImFcIl19fSwge1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtZG9tYWluXCI6W1wi
YVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05U
b3BVUkxBbmREb21haW5Db25kaXRpb25zKTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6
XCJ3ZWJraXQub3JnXCIsXCJpZi10b3AtdXJsXCI6W1wiYVwiXX19LCB7XCJhY3Rpb25cIjp7XCJ0
eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3Jn
XCIsXCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub3BVUkxBbmREb21haW5Db25kaXRpb25zKTsKKyAgICBj
aGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwidW5sZXNzLXRvcC11
cmxcIjpbXCJbXCJdfX1dIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJv
cjo6SlNPTkludmFsaWRSZWdleCk7CisgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Vi
a2l0Lm9yZ1wiLCBcInVuZXhwZWN0ZWQtaWRlbnRpZmllci1zaG91bGQtYmUtaWdub3JlZFwiOjV9
fV0iLCB7IH0pOwogfQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFN0cmljdFByZWZp
eFNlcGFyYXRlZE1hY2hpbmVzMSkK
</data>
<flag name="review"
          id="325571"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>