<?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>176167</bug_id>
          
          <creation_ts>2017-08-31 09:47:07 -0700</creation_ts>
          <short_desc>Implement FileSystemDirectoryEntry.getFile()</short_desc>
          <delta_ts>2017-09-01 17:20:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://wicg.github.io/entries-api/#dom-filesystemdirectoryentry-getfile</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343959</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-31 09:47:07 -0700</bug_when>
    <thetext>Implement FileSystemDirectoryEntry.getFile():
- https://wicg.github.io/entries-api/#dom-filesystemdirectoryentry-getfile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343960</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-31 09:47:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/34187775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344640</commentid>
    <comment_count>2</comment_count>
      <attachid>319660</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-01 16:07:16 -0700</bug_when>
    <thetext>Created attachment 319660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344644</commentid>
    <comment_count>3</comment_count>
      <attachid>319662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-01 16:15:52 -0700</bug_when>
    <thetext>Created attachment 319662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344666</commentid>
    <comment_count>4</comment_count>
      <attachid>319671</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-01 16:49:25 -0700</bug_when>
    <thetext>Created attachment 319671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344683</commentid>
    <comment_count>5</comment_count>
      <attachid>319671</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 17:19:58 -0700</bug_when>
    <thetext>Comment on attachment 319671
Patch

Clearing flags on attachment: 319671

Committed r221510: &lt;http://trac.webkit.org/changeset/221510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344684</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 17:20:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319660</attachid>
            <date>2017-09-01 16:07:16 -0700</date>
            <delta_ts>2017-09-01 16:15:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176167-20170901160715.patch</filename>
            <type>text/plain</type>
            <size>25951</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2MjVkZDA1ZDVmYjUz
OTYyYjZmMTZlNTQ2NjlhNzZhYmIzM2QxNi4uNWMwZTA5NTdkYmFlOTlmZDhhOTRjM2YwYTA1ZWYz
ZWEzMmVjNTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE3LTA5LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxODc3
NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCk6CisgICAgICAgIC0gaHR0
cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZpbGVzeXN0ZW1kaXJlY3Rvcnll
bnRyeS1nZXRmaWxlCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWdldEZpbGUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFBhdGhOYW1l
Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRQYXRoU2VnbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjppc1ZhbGlkUmVsYXRpdmVWaXJ0dWFsUGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkQWJzb2x1dGVWaXJ0dWFsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppc1Zh
bGlkVmlydHVhbFBhdGgpOgorICAgICAgICBJbXBsZW1lbnQgdmFyaW91cyBwYXRoIHZhbGlkYXRp
b24gZnVuY3Rpb25zIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Vu
dHJpZXMtYXBpLyNuYW1lcy1wYXRocworCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlUmVsYXRp
dmVWaXJ0dWFsUGF0aCk6CisgICAgICAgIC0gVXNlIFN0cmluZ1ZpZXcgZm9yIHNlY29uZCBwYXJh
bWV0ZXIgZm9yIGVmZmljaWVuY3kuIEhhZCB0byBrZWVwCisgICAgICAgICAgYSBTdHJpbmcgZm9y
IHRoZSBmaXJzdCBwYXJhbWV0ZXIgYmVjYXVzZSBJIG5lZWQgdGhlIHNwbGl0IHRvCisgICAgICAg
ICAgcmV0dXJuIGEgVmVjdG9yLgorICAgICAgICAtIElmIHRoZSBpbnB1dCBwYXRoIGlzIGFic29s
dXRlLCBjYWxsIHJlY3Vyc2l2ZWx5IHdpdGggJy8nIGFzCisgICAgICAgICAgYmFzZSBwYXRoIHNv
IHRoYXQgdGhlIHZpcnR1YWwgcGF0aCBnZXRzIHNhbml0aXplZCAoaS5lLiAnLi4nCisgICAgICAg
ICAgYW5kICcuJyBpbiB0aGUgYWJzb2x1dGUgVVJMIGdldCByZXNvbHZlZCkuCisKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkpOgorICAgICAgICBVc2UgU3Ry
aW5nIGluc3RlYWQgb2YgYXV0by4gSXQgaXMgbm90IG11Y2ggbG9uZ2VyIGFuZCBpcyBjbGVhcmVy
LgorCisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVBhdGhJc0RpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICBNb3ZlIGxvZ2lj
IHRvIHZhbGlkYXRlIHRoYXQgdGhlIHBhdGggaXMgYSBkaXJlY3RvcnkgZnJvbSBnZXRQYXJlbnQo
KSB0byBhCisgICAgICAgIHNlcGFyYXRlIGZ1bmN0aW9uLiBUaGlzIG9ubHkgbWFrZXMgc3VyZSB0
aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpcyBvbmx5CisgICAgICAgIHJlZidkIC8gZGVyZWYn
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUGF0aElz
RmlsZSk6CisgICAgICAgIExvZ2ljIGZvciB2YWxpZGF0aW5nIHRoYXQgYSBwYXRoIGlzIGEgZmls
ZSwgdXNlZCBieSBnZXRGaWxlKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OmdldEZpbGUpOgorICAgICAgICBJbXBsZW1lbnQgZ2V0RmlsZSgpIGFzIHBlcjoKKyAgICAgICAg
LSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNkb20tZmlsZXN5c3RlbWRpcmVj
dG9yeWVudHJ5LWdldGZpbGUKKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6
OmdldEZpbGUpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OjpnZXRGaWxlKCkgd2hpY2ggbWVyZWx5IGNhbGxzCisgICAgICAgIERPTUZpbGVT
eXN0ZW06OmdldEZpbGUoKS4KKworMjAxNy0wOS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCiAgICAgICAgIEltcGxlbWVudCBGaWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCkK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NQog
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxODc3NDM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggMjU1MGJjMzkzYjNi
ODU2NzNlZjRjYTMxMGFiMGNkODExNTQ3NWIyMy4uYTc5OGNjNzY2MWUyM2JkYmQ2OGIzYmU4YWVk
ZDM4MjkwMTJkYTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtODcsOSArODcsNTkgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoU2Ny
aXB0RXhlY3UKICAgICByZXR1cm4gV1RGTW92ZShlbnRyaWVzKTsKIH0KIAotc3RhdGljIGJvb2wg
aXNBYnNvbHV0ZVZpcnR1YWxQYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCisvLyBodHRw
czovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNuYW1lCitzdGF0aWMgYm9vbCBpc1ZhbGlk
UGF0aE5hbWVDaGFyYWN0ZXIoVUNoYXIgYykKIHsKLSAgICByZXR1cm4gIXZpcnR1YWxQYXRoLmlz
RW1wdHkoKSAmJiB2aXJ0dWFsUGF0aFswXSA9PSAnLyc7CisgICAgcmV0dXJuIGMgIT0gJ1wwJyAm
JiBjICE9ICcvJyAmJiBjICE9ICdcXCc7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8v
ZW50cmllcy1hcGkvI3BhdGgtc2VnbWVudAorc3RhdGljIGJvb2wgaXNWYWxpZFBhdGhTZWdtZW50
KFN0cmluZ1ZpZXcgc2VnbWVudCkKK3sKKyAgICBBU1NFUlQoIXNlZ21lbnQuaXNFbXB0eSgpKTsK
KyAgICBpZiAoc2VnbWVudCA9PSAiLiIgfHwgc2VnbWVudCA9PSAiLi4iKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWdtZW50Lmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkUGF0aE5hbWVDaGFyYWN0ZXIoc2VnbWVudFtp
XSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNyZWxhdGl2ZS1wYXRo
CitzdGF0aWMgYm9vbCBpc1ZhbGlkUmVsYXRpdmVWaXJ0dWFsUGF0aChTdHJpbmdWaWV3IHZpcnR1
YWxQYXRoKQoreworICAgIGlmICh2aXJ0dWFsUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICh2aXJ0dWFsUGF0aFswXSA9PSAnLycpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8gc2VnbWVudHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgnLycpOwor
ICAgIGZvciAoYXV0byBzZWdtZW50IDogc2VnbWVudHMpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlk
UGF0aFNlZ21lbnQoc2VnbWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMt
YXBpLyNhYnNvbHV0ZS1wYXRoCitzdGF0aWMgYm9vbCBpc1ZhbGlkQWJzb2x1dGVWaXJ0dWFsUGF0
aChTdHJpbmdWaWV3IHZpcnR1YWxQYXRoKQoreworICAgIGlmICh2aXJ0dWFsUGF0aC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFBhdGhbMF0gPT0g
Jy8nICYmIGlzVmFsaWRSZWxhdGl2ZVZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoLnN1YnN0cmluZygx
KSk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI3ZhbGlkLXBh
dGgKK3N0YXRpYyBib29sIGlzVmFsaWRWaXJ0dWFsUGF0aChTdHJpbmdWaWV3IHZpcnR1YWxQYXRo
KQoreworICAgIGlmICh2aXJ0dWFsUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAodmlydHVhbFBhdGhbMF0gPT0gJy8nKQorICAgICAgICByZXR1cm4gaXNWYWxp
ZEFic29sdXRlVmlydHVhbFBhdGgodmlydHVhbFBhdGgpOworICAgIHJldHVybiBpc1ZhbGlkUmVs
YXRpdmVWaXJ0dWFsUGF0aCh2aXJ0dWFsUGF0aCk7CiB9CiAKIERPTUZpbGVTeXN0ZW06OkRPTUZp
bGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKQEAgLTExOCwxNSArMTY4LDE1IEBAIFJlZjxGaWxl
U3lzdGVtRW50cnk+IERPTUZpbGVTeXN0ZW06OmZpbGVBc0VudHJ5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCiB9CiAKIC8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1h
cGkvI3Jlc29sdmUtYS1yZWxhdGl2ZS1wYXRoCi1zdGF0aWMgU3RyaW5nIHJlc29sdmVSZWxhdGl2
ZVBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBh
dGgpCitzdGF0aWMgU3RyaW5nIHJlc29sdmVSZWxhdGl2ZVZpcnR1YWxQYXRoKGNvbnN0IFN0cmlu
ZyYgYmFzZVZpcnR1YWxQYXRoLCBTdHJpbmdWaWV3IHJlbGF0aXZlVmlydHVhbFBhdGgpCiB7Ci0g
ICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7Ci0gICAgaWYgKGlzQWJzb2x1dGVWaXJ0
dWFsUGF0aChyZWxhdGl2ZVBhdGgpKQotICAgICAgICByZXR1cm4gcmVsYXRpdmVQYXRoOworICAg
IEFTU0VSVChiYXNlVmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKKyAgICBpZiAoaXNWYWxpZEFic29s
dXRlVmlydHVhbFBhdGgocmVsYXRpdmVWaXJ0dWFsUGF0aCkpCisgICAgICAgIHJldHVybiByZXNv
bHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChBU0NJSUxpdGVyYWwoIi8iKSwgcmVsYXRpdmVWaXJ0dWFs
UGF0aC5zdWJzdHJpbmcoMSkpOwogCi0gICAgYXV0byB2aXJ0dWFsUGF0aFNlZ21lbnRzID0gdmly
dHVhbFBhdGguc3BsaXQoJy8nKTsKLSAgICBhdXRvIHJlbGF0aXZlUGF0aFNlZ21lbnRzID0gcmVs
YXRpdmVQYXRoLnNwbGl0KCcvJyk7Ci0gICAgZm9yIChhdXRvJiBzZWdtZW50IDogcmVsYXRpdmVQ
YXRoU2VnbWVudHMpIHsKKyAgICBhdXRvIHZpcnR1YWxQYXRoU2VnbWVudHMgPSBiYXNlVmlydHVh
bFBhdGguc3BsaXQoJy8nKTsKKyAgICBhdXRvIHJlbGF0aXZlUGF0aFNlZ21lbnRzID0gcmVsYXRp
dmVWaXJ0dWFsUGF0aC5zcGxpdCgnLycpOworICAgIGZvciAoYXV0byBzZWdtZW50IDogcmVsYXRp
dmVQYXRoU2VnbWVudHMpIHsKICAgICAgICAgQVNTRVJUKCFzZWdtZW50LmlzRW1wdHkoKSk7CiAg
ICAgICAgIGlmIChzZWdtZW50ID09ICIuIikKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTM1
LDcgKzE4NSw3IEBAIHN0YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0aXZlUGF0aChjb25zdCBTdHJp
bmcmIHZpcnR1YWxQYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0CiAgICAgICAgICAgICAgICAgdmly
dHVhbFBhdGhTZWdtZW50cy5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICB2aXJ0dWFsUGF0aFNlZ21lbnRzLmFwcGVuZChzZWdtZW50KTsKKyAg
ICAgICAgdmlydHVhbFBhdGhTZWdtZW50cy5hcHBlbmQoc2VnbWVudC50b1N0cmluZygpKTsKICAg
ICB9CiAKICAgICBpZiAodmlydHVhbFBhdGhTZWdtZW50cy5pc0VtcHR5KCkpCkBAIC0xNzYsNyAr
MjI2LDcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKICAgICBBU1NFUlQoJmRpcmVjdG9yeS5m
aWxlc3lzdGVtKCkgPT0gdGhpcyk7CiAKICAgICBTdHJpbmcgZGlyZWN0b3J5VmlydHVhbFBhdGgg
PSBkaXJlY3RvcnkudmlydHVhbFBhdGgoKTsKLSAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQ
YXRoKGRpcmVjdG9yeVZpcnR1YWxQYXRoKTsKKyAgICBTdHJpbmcgZnVsbFBhdGggPSBldmFsdWF0
ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBhdGgpOwogICAgIGlmIChmdWxsUGF0aCA9PSBtX3Jvb3RQ
YXRoKSB7CiAgICAgICAgIFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4gY2hpbGRyZW47CiAg
ICAgICAgIGNoaWxkcmVuLmFwcGVuZChmaWxlQXNFbnRyeShjb250ZXh0KSk7CkBAIC0xOTIsMjAg
KzI0Miw3NiBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcgogICAgIH0pOwogfQogCitzdGF0aWMg
RXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoLCBTdHJpbmcmJiB2aXJ0dWFsUGF0aCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmICghZmlsZUlzRGlyZWN0b3J5KGZ1bGxQYXRoLCBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3Vu
ZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9y
eSIgfTsKKyAgICByZXR1cm4gV1RGTW92ZSh2aXJ0dWFsUGF0aCk7Cit9CisKIHZvaWQgRE9NRmls
ZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVT
eXN0ZW1FbnRyeSYgZW50cnksIEdldFBhcmVudENhbGxiYWNrJiYgY29tcGxldGlvbkNhbGxiYWNr
KQogewotICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IHJlc29sdmVSZWxhdGl2ZVBhdGgoZW50cnku
dmlydHVhbFBhdGgoKSwgQVNDSUlMaXRlcmFsKCIuLiIpKTsKKyAgICBBU1NFUlQoJmVudHJ5LmZp
bGVzeXN0ZW0oKSA9PSB0aGlzKTsKKworICAgIFN0cmluZyB2aXJ0dWFsUGF0aCA9IHJlc29sdmVS
ZWxhdGl2ZVZpcnR1YWxQYXRoKGVudHJ5LnZpcnR1YWxQYXRoKCksICIuLiIpOwogICAgIEFTU0VS
VCh2aXJ0dWFsUGF0aFswXSA9PSAnLycpOwogICAgIFN0cmluZyBmdWxsUGF0aCA9IGV2YWx1YXRl
UGF0aCh2aXJ0dWFsUGF0aCk7CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb250
ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBh
dGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbXBsZXRp
b25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKCFmaWxlSXNEaXJlY3RvcnkoZnVsbFBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGlj
TGlua3M6Ok5vKSkgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkNh
bGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSB7Ci0gICAgICAgICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJQYXRoIG5vIGxv
bmdlciBleGlzdHMgb3IgaXMgbm8gbG9uZ2VyIGEgZGlyZWN0b3J5IiB9KTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2aXJ0dWFsUGF0aCA9IGNy
b3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUo
Y29tcGxldGlvbkNhbGxiYWNrKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCB2aXJ0dWFsUGF0
aCkpOworICAgICAgICBhdXRvIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNE
aXJlY3RvcnkoZnVsbFBhdGgsIFdURk1vdmUodmlydHVhbFBhdGgpKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIHZhbGlkYXRlZFZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29tcGxl
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxl
YXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250ZXh0LCAq
dGhpcywgdmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlkYXRl
UGF0aElzRmlsZShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoLCBTdHJpbmcmJiB2aXJ0dWFsUGF0aCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIEZpbGVNZXRhZGF0YSBtZXRh
ZGF0YTsKKyAgICBpZiAoIWdldEZpbGVNZXRhZGF0YShmdWxsUGF0aCwgbWV0YWRhdGEsIFNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dEZvdW5kRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5vdCBleGlzdCIpIH07CisKKyAg
ICBpZiAobWV0YWRhdGEudHlwZSAhPSBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZU1pc21hdGNoRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRW50cnkg
YXQgcGF0aCBpcyBub3QgYSBmaWxlIikgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKHZpcnR1YWxQ
YXRoKTsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZp
bGVzeXN0ZW1kaXJlY3RvcnllbnRyeS1nZXRmaWxlCit2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZp
bGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5JiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeTo6RmxhZ3MmIGZsYWdzLCBHZXRGaWxlQ2FsbGJhY2smJiBjb21wbGV0
aW9uQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKCZkaXJlY3RvcnkuZmlsZXN5c3RlbSgpID09IHRo
aXMpOworCisgICAgaWYgKCFpc1ZhbGlkVmlydHVhbFBhdGgodmlydHVhbFBhdGgpKSB7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxl
dGlvbkNhbGxiYWNrKV0geworICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEV4Y2VwdGlv
biB7IFR5cGVNaXNtYXRjaEVycm9yLCBBU0NJSUxpdGVyYWwoIlBhdGggaXMgaW52YWxpZCIpIH0p
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChmbGFncy5j
cmVhdGUpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkNhbGxiYWNrID0g
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uQ2Fs
bGJhY2soRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJjcmVhdGUgZmxh
ZyBjYW5ub3QgYmUgdHJ1ZSIpIH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFN0cmluZyByZXNvbHZlZFZpcnR1YWxQYXRoID0gcmVzb2x2ZVJlbGF0aXZlVmly
dHVhbFBhdGgoZGlyZWN0b3J5LnZpcnR1YWxQYXRoKCksIHZpcnR1YWxQYXRoKTsKKyAgICBBU1NF
UlQocmVzb2x2ZWRWaXJ0dWFsUGF0aFswXSA9PSAnLycpOworICAgIFN0cmluZyBmdWxsUGF0aCA9
IGV2YWx1YXRlUGF0aChyZXNvbHZlZFZpcnR1YWxQYXRoKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBmdWxsUGF0aCA9IGNyb3Nz
VGhyZWFkQ29weShmdWxsUGF0aCksIHJlc29sdmVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENv
cHkocmVzb2x2ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29t
cGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0
dWFsUGF0aCA9IHZhbGlkYXRlUGF0aElzRmlsZShmdWxsUGF0aCwgV1RGTW92ZShyZXNvbHZlZFZp
cnR1YWxQYXRoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBX
VEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2
YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxl
dGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0
dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJh
Y2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRmlsZVN5c3RlbUZpbGVF
bnRyeTo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IGQ1YTQ4OWM5
MjljMmViNTU5M2M3ODc1MWM2ODM5NjdlYTA3YmU3YzIuLmE4MzM5OGU5NTE4NWQzMjAxNWU4OWZj
NTRmYzNjODRjYjVlYmYzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtMzQsNyArMzUsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlOwotY2xhc3MgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OworY2xhc3MgRmlsZVN5c3RlbUZpbGVFbnRyeTsKIGNsYXNzIEZpbGVTeXN0ZW1F
bnRyeTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKQEAgLTU3LDYgKzU4LDkgQEAg
cHVibGljOgogICAgIHVzaW5nIEdldFBhcmVudENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk+PiYmKT47CiAgICAgdm9p
ZCBnZXRQYXJlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1FbnRyeSYsIEdl
dFBhcmVudENhbGxiYWNrJiYpOwogCisgICAgdXNpbmcgR2V0RmlsZUNhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlU3lzdGVtRmlsZUVudHJ5Pj4mJik+Owor
ICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5JiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29uc3QgRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5OjpGbGFncyYsIEdldEZpbGVDYWxsYmFjayYmKTsKKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5LmNwcAppbmRleCA2YWU4Njc1MmM0MzY2MzBlNTkyNTg4NTYxMDMyMWE2NDIzN2FlNzVl
Li4xYzI4MTE2NzY5ZDVlNWY1ZDFiM2JkODA0MjNlNGIwOTVhNzFjYmQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5LmNwcApAQCAtMjcsOCArMjcsMTIgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnkuaCIKIAogI2luY2x1ZGUgIkRPTUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1FbnRyeUNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUZpbGVFbnRyeS5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miwx
MCArNDYsMjAgQEAgUmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI+IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKFNjcmlwdEV4ZWMKICAgICByZXR1cm4gRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKGNvbnRleHQsICp0aGlzKTsKIH0KIAotdm9pZCBGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgRmxhZ3MmLCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5
Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit2b2lk
IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZsYWdzJiBmbGFncywgUmVmUHRy
PEZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9y
Q2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKLSAgICBpZiAoZXJyb3JDYWxsYmFjaykKLSAg
ICAgICAgZXJyb3JDYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBET01FeGNlcHRp
b246OmNyZWF0ZShOb3RTdXBwb3J0ZWRFcnJvcikpOworICAgIGlmICghc3VjY2Vzc0NhbGxiYWNr
ICYmICFlcnJvckNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBmaWxlc3lzdGVtKCku
Z2V0RmlsZShjb250ZXh0LCAqdGhpcywgcGF0aCwgZmxhZ3MsIFt0aGlzLCBwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92
ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNr
KV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CisgICAgICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBlcnJvckNh
bGxiYWNrLT5oYW5kbGVFdmVudChET01FeGNlcHRpb246OmNyZWF0ZShyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZl
bnQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBGbGFncyYsIFJlZlB0cjxGaWxlU3lzdGVt
RW50cnlDYWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MDVhNDM5M2VhMWM0OTkxYmU5NzNiOTgyYTEwNmFhN2MwYWIwMjFjLi44Yzc5Njc0
NGQ5ZDY3OWZjMDNhNDRhMTE0NGQ4YjYzMDU5YTQ0MmY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAK
IDIwMTctMDktMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBJ
bXBsZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldEZpbGUoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTY3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNDE4Nzc3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRGaWxlLmh0bWw6IEFkZGVkLgorCisyMDE3LTA5LTAxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1FbnRyeS5n
ZXRQYXJlbnQoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MTY1CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1n
ZXRGaWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1nZXRGaWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjFj
MWVkYzA3MzQyYjM2YjYyMzZmMjdlOTZjNGVmYWNlYjEzYzVkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dEZpbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDggQEAKK0Jhc2ljIHRlc3QgY292ZXJhZ2Ug
Zm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCkKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAxCisqIEVy
cm9yIGNhc2U6IGNyZWF0ZSBmbGFnIGlzIHNldCB0byB0cnVlCitQQVNTIGV4Lm5hbWUgaXMgIlNl
Y3VyaXR5RXJyb3IiCisqIFJlZ3VsYXIgY2FzZTogZ2V0RmlsZSgnZmlsZTEudHh0JykKK1BBU1Mg
ZmlsZTFFbnRyeS5uYW1lIGlzICJmaWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuZnVsbFBhdGgg
aXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBmaWxlMUVudHJ5LmlzRmlsZSBpcyB0cnVl
CisqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCB0byBmb2xkZXIKK1BB
U1MgZXgubmFtZSBpcyAiVHlwZU1pc21hdGNoRXJyb3IiCisqIEVycm9yIGNhc2U6IGNhbGxpbmcg
Z2V0RmlsZSgpIHdpdGggcGF0aCBjb250YWluaW5nIGJhY2tzbGFzaAorUEFTUyBleC5uYW1lIGlz
ICJUeXBlTWlzbWF0Y2hFcnJvciIKKyogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0
aCBwYXRoIHdoaWNoIGRvZXMgbm90IGV4aXN0CitQQVNTIGV4Lm5hbWUgaXMgIk5vdEZvdW5kRXJy
b3IiCisqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCBjb250YWluaW5n
IGEgTlVMIGNoYXJhY3RlcgorUEFTUyBleC5uYW1lIGlzICJUeXBlTWlzbWF0Y2hFcnJvciIKKyog
RXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIHRvIHJvb3QKK1BBU1MgZXgu
bmFtZSBpcyAiVHlwZU1pc21hdGNoRXJyb3IiCisqIFJlZ3VsYXIgY2FzZTogY2FsbGluZyBnZXRG
aWxlKCkgd2l0aCBhYnNvbHV0ZSBwYXRoCitQQVNTIGZpbGUzRW50cnkubmFtZSBpcyAiZmlsZTMu
dHh0IgorUEFTUyBmaWxlM0VudHJ5LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjEv
ZmlsZTMudHh0IgorUEFTUyBmaWxlM0VudHJ5LmlzRmlsZSBpcyB0cnVlCisqIEVkZ2UgY2FzZTog
Y2FsbGluZyBnZXRGaWxlKCkgd2l0aCByZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgJy4nIGFuZCAn
Li4nCitQQVNTIGZpbGUzRW50cnkubmFtZSBpcyAiZmlsZTMudHh0IgorUEFTUyBmaWxlM0VudHJ5
LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFTUyBmaWxl
M0VudHJ5LmlzRmlsZSBpcyB0cnVlCisqIEVkZ2UgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0
aCByZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgdG9vIG1hbnkgJy4uJworUEFTUyBmaWxlMUVudHJ5
Lm5hbWUgaXMgImZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3RG
aWxlcy9maWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuaXNGaWxlIGlzIHRydWUKKyogRWRnZSBj
YXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIGFic29sdXRlIHBhdGggY29udGFpbmluZyAnLi4n
CitQQVNTIGZpbGUxRW50cnkubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBmaWxlMUVudHJ5LmZ1
bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5pc0ZpbGUg
aXMgdHJ1ZQorKiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1dGUgcGF0
aCBjb250YWluaW5nIHRvbyBtYW55ICcuLicKK1BBU1MgZmlsZTFFbnRyeS5uYW1lIGlzICJmaWxl
MS50eHQiCitQQVNTIGZpbGUxRW50cnkuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0
IgorUEFTUyBmaWxlMUVudHJ5LmlzRmlsZSBpcyB0cnVlCisqIEVycm9yIGNhc2U6IGNhbGxpbmcg
Z2V0RmlsZSgpIHdpdGggZW1wdHkgcGF0aAorUEFTUyBleC5uYW1lIGlzICJUeXBlTWlzbWF0Y2hF
cnJvciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtZ2V0RmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEZpbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmMyMTlj
NTE0NzJiY2QzZDExZGFiYzU2MjllOWZiNjliZWFmYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEZp
bGUuaHRtbApAQCAtMCwwICsxLDE5NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiQmFzaWMg
dGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldEZpbGUoKSIpOwor
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0
b3J5LCBwYXRoLCBmbGFncykKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICBkaXJlY3RvcnkuZ2V0RmlsZShwYXRoLCBmbGFncywgcmVzb2x2
ZSwgcmVqZWN0KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgZGVidWco
IiogRXJyb3IgY2FzZTogY3JlYXRlIGZsYWcgaXMgc2V0IHRvIHRydWUiKTsKKyAgICByZXR1cm4g
Z2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgImZpbGUxLnR4dCIsIHsgY3JlYXRlOiB0
cnVlIH0pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgZmFpbCB3
aGVuIGNyZWF0ZSBmbGFnIGlzIHRydWUiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgZXggPSBl
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiU2VjdXJpdHlFcnJv
ciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1ZygiKiBSZWd1
bGFyIGNhc2U6IGdldEZpbGUoJ2ZpbGUxLnR4dCcpIik7CisgICAgcmV0dXJuIGdldEZpbGVBc1By
b21pc2UoZGlyZWN0b3J5RW50cnksICJmaWxlMS50eHQiLCB7fSkudGhlbihlbnRyeSA9PiB7Cisg
ICAgICAgIGZpbGUxRW50cnkgPSBlbnRyeTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJmaWxlMUVudHJ5Lm5hbWUiLCAiZmlsZTEudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZmlsZTFFbnRyeS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIpOwor
ICAgICAgICBzaG91bGRCZVRydWUoImZpbGUxRW50cnkuaXNGaWxlIik7CisgICAgfSwgZSA9PiB7
CisgICAgICAgIHRlc3RGYWlsZWQoImdldEZpbGUoJ2ZpbGUxLnR4dCcpIHNob3VsZCBzdWNjZWVk
Iik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGRlYnVnKCIqIEVycm9y
IGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCB0byBmb2xkZXIiKTsKKyAgICByZXR1
cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgInN1YmZvbGRlcjEiLCB7fSkudGhl
bihlbnRyeSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBmYWlsIHdoZW4gcGF0aCBw
b2ludHMgdG8gYSBmb2xkZXIiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgZXggPSBlOworICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiVHlwZU1pc21hdGNoRXJyb3Ii
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgZGVidWcoIiogRXJyb3Ig
Y2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIGNvbnRhaW5pbmcgYmFja3NsYXNoIik7
CisgICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICJcXGZpbGUxLnR4
dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGZhaWwg
d2hlbiBwYXRoIGlzIGludmFsaWQiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgZXggPSBlOwor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiVHlwZU1pc21hdGNoRXJy
b3IiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgZGVidWcoIiogRXJy
b3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIHdoaWNoIGRvZXMgbm90IGV4aXN0
Iik7CisgICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICJkb2Vzbm90
ZXhpc3QudHh0Iiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91
bGQgZmFpbCB3aGVuIHBhdGggZG9lcyBub3QgZXhpc3QiKTsKKyAgICB9LCBlID0+IHsKKyAgICAg
ICAgZXggPSBlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiTm90
Rm91bmRFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBkZWJ1
ZygiKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBhdGggY29udGFpbmluZyBh
IE5VTCBjaGFyYWN0ZXIiKTsKKyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlF
bnRyeSwgImZpbGUxLnR4dFwwIiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFp
bGVkKCJTaG91bGQgZmFpbCB3aGVuIHBhdGggaXMgaW52YWxpZCIpOworICAgIH0sIGUgPT4gewor
ICAgICAgICBleCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIs
ICJUeXBlTWlzbWF0Y2hFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0NygpIHsK
KyAgICBkZWJ1ZygiKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBhdGggdG8g
cm9vdCIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiLyIs
IHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGZhaWwgd2hl
biBwYXRoIGlzIG5vdCBhIGRpcmVjdG9yeSIpOworICAgIH0sIGUgPT4geworICAgICAgICBleCA9
IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJUeXBlTWlzbWF0
Y2hFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0OCgpIHsKKyAgICBkZWJ1Zygi
KiBSZWd1bGFyIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1dGUgcGF0aCIpOwor
ICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiL3Rlc3RGaWxlcy9z
dWJmb2xkZXIxL2ZpbGUzLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgZmlsZTNF
bnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUzRW50cnku
bmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxl
M0VudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMS9maWxlMy50eHQiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCJmaWxlM0VudHJ5LmlzRmlsZSIpOworICAgIH0sIGUgPT4gewor
ICAgICAgICB0ZXN0RmFpbGVkKCJnZXRGaWxlKCcvdGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMu
dHh0JykgaG91bGQgc3VjY2VlZCIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0OSgpIHsK
KyAgICBkZWJ1ZygiKiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcmVsYXRpdmUg
cGF0aCBjb250YWluaW5nICcuJyBhbmQgJy4uJyIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9t
aXNlKGRpcmVjdG9yeUVudHJ5LCAiLi4vdGVzdEZpbGVzLy4vLi9zdWJmb2xkZXIxLy4uL3N1YmZv
bGRlcjEvLi9maWxlMy50eHQiLCB7fSkudGhlbihlbnRyeSA9PiB7CisgICAgICAgIGZpbGUzRW50
cnkgPSBlbnRyeTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlM0VudHJ5Lm5h
bWUiLCAiZmlsZTMudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZTNF
bnRyeS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0Iik7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTNFbnRyeS5pc0ZpbGUiKTsKKyAgICB9LCBlID0+IHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZ2V0RmlsZSgnLi4vdGVzdEZpbGVzLy4vLi9zdWJmb2xkZXIxLy4u
L3N1YmZvbGRlcjEvLi9maWxlMy50eHQnKSBob3VsZCBzdWNjZWVkIik7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QxMCgpIHsKKyAgICBkZWJ1ZygiKiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0
RmlsZSgpIHdpdGggcmVsYXRpdmUgcGF0aCBjb250YWluaW5nIHRvbyBtYW55ICcuLiciKTsKKyAg
ICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgIi4uLy4uLy4uLy4uLy4u
L3Rlc3RGaWxlcy9maWxlMS50eHQiLCB7fSkudGhlbihlbnRyeSA9PiB7CisgICAgICAgIGZpbGUx
RW50cnkgPSBlbnRyeTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlMUVudHJ5
Lm5hbWUiLCAiZmlsZTEudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmls
ZTFFbnRyeS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIpOworICAgICAgICBzaG91
bGRCZVRydWUoImZpbGUxRW50cnkuaXNGaWxlIik7CisgICAgfSwgZSA9PiB7CisgICAgICAgIHRl
c3RGYWlsZWQoImdldEZpbGUoJy4uLy4uLy4uLy4uLy4uL3Rlc3RGaWxlcy9maWxlMS50eHQnKSBo
b3VsZCBzdWNjZWVkIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxMSgpIHsKKyAgICBk
ZWJ1ZygiKiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1dGUgcGF0aCBj
b250YWluaW5nICcuLiciKTsKKyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlF
bnRyeSwgIi90ZXN0RmlsZXMvLi4vdGVzdEZpbGVzL2ZpbGUxLnR4dCIsIHt9KS50aGVuKGVudHJ5
ID0+IHsKKyAgICAgICAgZmlsZTFFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImZpbGUxRW50cnkubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJmaWxlMUVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvZmlsZTEu
dHh0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTFFbnRyeS5pc0ZpbGUiKTsKKyAgICB9
LCBlID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0RmlsZSgnLi4vLi4vLi4vLi4vLi4vdGVz
dEZpbGVzL2ZpbGUxLnR4dCcpIGhvdWxkIHN1Y2NlZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gdGVzdDEyKCkgeworICAgIGRlYnVnKCIqIEVkZ2UgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkg
d2l0aCBhYnNvbHV0ZSBwYXRoIGNvbnRhaW5pbmcgdG9vIG1hbnkgJy4uJyIpOworICAgIHJldHVy
biBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiLy4uLy4uLy4uLy4uLy4uL3Rlc3RG
aWxlcy9maWxlMS50eHQiLCB7fSkudGhlbihlbnRyeSA9PiB7CisgICAgICAgIGZpbGUxRW50cnkg
PSBlbnRyeTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlMUVudHJ5Lm5hbWUi
LCAiZmlsZTEudHh0Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZTFFbnRy
eS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImZpbGUxRW50cnkuaXNGaWxlIik7CisgICAgfSwgZSA9PiB7CisgICAgICAgIHRlc3RGYWls
ZWQoImdldEZpbGUoJy4uLy4uLy4uLy4uLy4uL3Rlc3RGaWxlcy9maWxlMS50eHQnKSBob3VsZCBz
dWNjZWVkIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxMygpIHsKKyAgICBkZWJ1Zygi
KiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIGVtcHR5IHBhdGgiKTsKKyAgICBy
ZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgIiIsIHt9KS50aGVuKGVudHJ5
ID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGZhaWwgd2hlbiBwYXRoIGlzIGludmFs
aWQiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgZXggPSBlOworICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiVHlwZU1pc21hdGNoRXJyb3IiKTsKKyAgICB9KTsKK30K
KwordmFyIGRyb3B6b25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Ryb3B6b25lJyk7Citk
cm9wem9uZS5vbmRyb3AgPSBmdW5jdGlvbihlKSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwor
ICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyOworCisgICAgc2hvdWxkQmUoImRhdGFU
cmFuc2Zlci5pdGVtcy5sZW5ndGgiLCAiMSIpOworCisgICAgZGlyZWN0b3J5RW50cnkgPSBkYXRh
VHJhbnNmZXIuaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSgpOworICAgIHRlc3QxKCkKKyAgICAu
dGhlbih0ZXN0MikKKyAgICAudGhlbih0ZXN0MykKKyAgICAudGhlbih0ZXN0NCkKKyAgICAudGhl
bih0ZXN0NSkKKyAgICAudGhlbih0ZXN0NikKKyAgICAudGhlbih0ZXN0NykKKyAgICAudGhlbih0
ZXN0OCkKKyAgICAudGhlbih0ZXN0OSkKKyAgICAudGhlbih0ZXN0MTApCisgICAgLnRoZW4odGVz
dDExKQorICAgIC50aGVuKHRlc3QxMikKKyAgICAudGhlbih0ZXN0MTMpCisgICAgLnRoZW4oZmlu
aXNoSlNUZXN0KTsKK307CisKK2Ryb3B6b25lLm9uZHJhZ292ZXIgPSBmdW5jdGlvbihldikgewor
ICAgIGV2LnByZXZlbnREZWZhdWx0KCk7Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAg
IGRyYWdGaWxlc09udG9FbGVtZW50KGRyb3B6b25lLCBbJy4uLy4uL2Zhc3QvZm9ybXMvZmlsZS9y
ZXNvdXJjZXMvdGVzdEZpbGVzJ10pOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY1NDRmNjU3Zjdh
ODBhOGRlZmVmZTBjNjEyMDI4MjViOTc4NjJiMGEuLjFhNmRiMWZmOWI0OGU2ZGI4ZGI4NDgyZjgx
YzVjZjE4YmIzZWM4NWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC01NjcsNiArNTY3LDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1p
dGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLWVycm9yLmh0bWwKIGVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItcm9vdC5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0QXNFbnRyeS5o
dG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0UGFyZW50
LXJvb3QuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdl
dFBhcmVudC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3At
Z2V0UGFyZW50Mi5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319662</attachid>
            <date>2017-09-01 16:15:52 -0700</date>
            <delta_ts>2017-09-01 16:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176167-20170901161552.patch</filename>
            <type>text/plain</type>
            <size>25674</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2MjVkZDA1ZDVmYjUz
OTYyYjZmMTZlNTQ2NjlhNzZhYmIzM2QxNi4uNWMwZTA5NTdkYmFlOTlmZDhhOTRjM2YwYTA1ZWYz
ZWEzMmVjNTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE3LTA5LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxODc3
NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCk6CisgICAgICAgIC0gaHR0
cHM6Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jZG9tLWZpbGVzeXN0ZW1kaXJlY3Rvcnll
bnRyeS1nZXRmaWxlCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWdldEZpbGUuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFBhdGhOYW1l
Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRQYXRoU2VnbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjppc1ZhbGlkUmVsYXRpdmVWaXJ0dWFsUGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkQWJzb2x1dGVWaXJ0dWFsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppc1Zh
bGlkVmlydHVhbFBhdGgpOgorICAgICAgICBJbXBsZW1lbnQgdmFyaW91cyBwYXRoIHZhbGlkYXRp
b24gZnVuY3Rpb25zIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2Vu
dHJpZXMtYXBpLyNuYW1lcy1wYXRocworCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlUmVsYXRp
dmVWaXJ0dWFsUGF0aCk6CisgICAgICAgIC0gVXNlIFN0cmluZ1ZpZXcgZm9yIHNlY29uZCBwYXJh
bWV0ZXIgZm9yIGVmZmljaWVuY3kuIEhhZCB0byBrZWVwCisgICAgICAgICAgYSBTdHJpbmcgZm9y
IHRoZSBmaXJzdCBwYXJhbWV0ZXIgYmVjYXVzZSBJIG5lZWQgdGhlIHNwbGl0IHRvCisgICAgICAg
ICAgcmV0dXJuIGEgVmVjdG9yLgorICAgICAgICAtIElmIHRoZSBpbnB1dCBwYXRoIGlzIGFic29s
dXRlLCBjYWxsIHJlY3Vyc2l2ZWx5IHdpdGggJy8nIGFzCisgICAgICAgICAgYmFzZSBwYXRoIHNv
IHRoYXQgdGhlIHZpcnR1YWwgcGF0aCBnZXRzIHNhbml0aXplZCAoaS5lLiAnLi4nCisgICAgICAg
ICAgYW5kICcuJyBpbiB0aGUgYWJzb2x1dGUgVVJMIGdldCByZXNvbHZlZCkuCisKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkpOgorICAgICAgICBVc2UgU3Ry
aW5nIGluc3RlYWQgb2YgYXV0by4gSXQgaXMgbm90IG11Y2ggbG9uZ2VyIGFuZCBpcyBjbGVhcmVy
LgorCisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZVBhdGhJc0RpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQpOgorICAgICAgICBNb3ZlIGxvZ2lj
IHRvIHZhbGlkYXRlIHRoYXQgdGhlIHBhdGggaXMgYSBkaXJlY3RvcnkgZnJvbSBnZXRQYXJlbnQo
KSB0byBhCisgICAgICAgIHNlcGFyYXRlIGZ1bmN0aW9uLiBUaGlzIG9ubHkgbWFrZXMgc3VyZSB0
aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpcyBvbmx5CisgICAgICAgIHJlZidkIC8gZGVyZWYn
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUGF0aElz
RmlsZSk6CisgICAgICAgIExvZ2ljIGZvciB2YWxpZGF0aW5nIHRoYXQgYSBwYXRoIGlzIGEgZmls
ZSwgdXNlZCBieSBnZXRGaWxlKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06
OmdldEZpbGUpOgorICAgICAgICBJbXBsZW1lbnQgZ2V0RmlsZSgpIGFzIHBlcjoKKyAgICAgICAg
LSBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNkb20tZmlsZXN5c3RlbWRpcmVj
dG9yeWVudHJ5LWdldGZpbGUKKworICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9ET01GaWxl
U3lzdGVtLmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6
OmdldEZpbGUpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5OjpnZXRGaWxlKCkgd2hpY2ggbWVyZWx5IGNhbGxzCisgICAgICAgIERPTUZpbGVT
eXN0ZW06OmdldEZpbGUoKS4KKworMjAxNy0wOS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCiAgICAgICAgIEltcGxlbWVudCBGaWxlU3lzdGVtRW50cnkuZ2V0UGFyZW50KCkK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NQog
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxODc3NDM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggMjU1MGJjMzkzYjNi
ODU2NzNlZjRjYTMxMGFiMGNkODExNTQ3NWIyMy4uNmIwYTNiYjE0NWIwZWVmN2Y4MTdjMGViMjM3
ZjBiYWVlNGVhYmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtODcsOSArODcsNTEgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3RvcjxSZWY8RmlsZVN5c3RlbUVudHJ5Pj4+IHRvRmlsZVN5c3RlbUVudHJpZXMoU2Ny
aXB0RXhlY3UKICAgICByZXR1cm4gV1RGTW92ZShlbnRyaWVzKTsKIH0KIAotc3RhdGljIGJvb2wg
aXNBYnNvbHV0ZVZpcnR1YWxQYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCisvLyBodHRw
czovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNuYW1lCitzdGF0aWMgYm9vbCBpc1ZhbGlk
UGF0aE5hbWVDaGFyYWN0ZXIoVUNoYXIgYykKIHsKLSAgICByZXR1cm4gIXZpcnR1YWxQYXRoLmlz
RW1wdHkoKSAmJiB2aXJ0dWFsUGF0aFswXSA9PSAnLyc7CisgICAgcmV0dXJuIGMgIT0gJ1wwJyAm
JiBjICE9ICcvJyAmJiBjICE9ICdcXCc7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8v
ZW50cmllcy1hcGkvI3BhdGgtc2VnbWVudAorc3RhdGljIGJvb2wgaXNWYWxpZFBhdGhTZWdtZW50
KFN0cmluZ1ZpZXcgc2VnbWVudCkKK3sKKyAgICBBU1NFUlQoIXNlZ21lbnQuaXNFbXB0eSgpKTsK
KyAgICBpZiAoc2VnbWVudCA9PSAiLiIgfHwgc2VnbWVudCA9PSAiLi4iKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWdtZW50Lmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkUGF0aE5hbWVDaGFyYWN0ZXIoc2VnbWVudFtp
XSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNyZWxhdGl2ZS1wYXRo
CitzdGF0aWMgYm9vbCBpc1ZhbGlkUmVsYXRpdmVWaXJ0dWFsUGF0aChTdHJpbmdWaWV3IHZpcnR1
YWxQYXRoKQoreworICAgIGlmICh2aXJ0dWFsUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICh2aXJ0dWFsUGF0aFswXSA9PSAnLycpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8gc2VnbWVudHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgnLycpOwor
ICAgIGZvciAoYXV0byBzZWdtZW50IDogc2VnbWVudHMpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlk
UGF0aFNlZ21lbnQoc2VnbWVudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMt
YXBpLyN2YWxpZC1wYXRoCitzdGF0aWMgYm9vbCBpc1ZhbGlkVmlydHVhbFBhdGgoU3RyaW5nVmll
dyB2aXJ0dWFsUGF0aCkKK3sKKyAgICBpZiAodmlydHVhbFBhdGguaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHZpcnR1YWxQYXRoWzBdID09ICcvJykKKyAgICAgICAg
cmV0dXJuIGlzVmFsaWRSZWxhdGl2ZVZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoLnN1YnN0cmluZygx
KSk7CisgICAgcmV0dXJuIGlzVmFsaWRSZWxhdGl2ZVZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoKTsK
IH0KIAogRE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShSZWY8RmlsZT4mJiBmaWxlKQpAQCAt
MTE4LDE1ICsxNjAsMTUgQEAgUmVmPEZpbGVTeXN0ZW1FbnRyeT4gRE9NRmlsZVN5c3RlbTo6Zmls
ZUFzRW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIH0KIAogLy8gaHR0cHM6
Ly93aWNnLmdpdGh1Yi5pby9lbnRyaWVzLWFwaS8jcmVzb2x2ZS1hLXJlbGF0aXZlLXBhdGgKLXN0
YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRo
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKK3N0YXRpYyBTdHJpbmcgcmVzb2x2ZVJlbGF0
aXZlVmlydHVhbFBhdGgoY29uc3QgU3RyaW5nJiBiYXNlVmlydHVhbFBhdGgsIFN0cmluZ1ZpZXcg
cmVsYXRpdmVWaXJ0dWFsUGF0aCkKIHsKLSAgICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8n
KTsKLSAgICBpZiAoaXNBYnNvbHV0ZVZpcnR1YWxQYXRoKHJlbGF0aXZlUGF0aCkpCi0gICAgICAg
IHJldHVybiByZWxhdGl2ZVBhdGg7CisgICAgQVNTRVJUKGJhc2VWaXJ0dWFsUGF0aFswXSA9PSAn
LycpOworICAgIGlmIChyZWxhdGl2ZVZpcnR1YWxQYXRoWzBdID09ICcvJykKKyAgICAgICAgcmV0
dXJuIHJlc29sdmVSZWxhdGl2ZVZpcnR1YWxQYXRoKEFTQ0lJTGl0ZXJhbCgiLyIpLCByZWxhdGl2
ZVZpcnR1YWxQYXRoLnN1YnN0cmluZygxKSk7CiAKLSAgICBhdXRvIHZpcnR1YWxQYXRoU2VnbWVu
dHMgPSB2aXJ0dWFsUGF0aC5zcGxpdCgnLycpOwotICAgIGF1dG8gcmVsYXRpdmVQYXRoU2VnbWVu
dHMgPSByZWxhdGl2ZVBhdGguc3BsaXQoJy8nKTsKLSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBy
ZWxhdGl2ZVBhdGhTZWdtZW50cykgeworICAgIGF1dG8gdmlydHVhbFBhdGhTZWdtZW50cyA9IGJh
c2VWaXJ0dWFsUGF0aC5zcGxpdCgnLycpOworICAgIGF1dG8gcmVsYXRpdmVQYXRoU2VnbWVudHMg
PSByZWxhdGl2ZVZpcnR1YWxQYXRoLnNwbGl0KCcvJyk7CisgICAgZm9yIChhdXRvIHNlZ21lbnQg
OiByZWxhdGl2ZVBhdGhTZWdtZW50cykgewogICAgICAgICBBU1NFUlQoIXNlZ21lbnQuaXNFbXB0
eSgpKTsKICAgICAgICAgaWYgKHNlZ21lbnQgPT0gIi4iKQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xMzUsNyArMTc3LDcgQEAgc3RhdGljIFN0cmluZyByZXNvbHZlUmVsYXRpdmVQYXRoKGNv
bnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXQKICAgICAgICAgICAg
ICAgICB2aXJ0dWFsUGF0aFNlZ21lbnRzLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9Ci0gICAgICAgIHZpcnR1YWxQYXRoU2VnbWVudHMuYXBwZW5kKHNlZ21l
bnQpOworICAgICAgICB2aXJ0dWFsUGF0aFNlZ21lbnRzLmFwcGVuZChzZWdtZW50LnRvU3RyaW5n
KCkpOwogICAgIH0KIAogICAgIGlmICh2aXJ0dWFsUGF0aFNlZ21lbnRzLmlzRW1wdHkoKSkKQEAg
LTE3Niw3ICsyMTgsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbURpcgogICAgIEFTU0VSVCgmZGly
ZWN0b3J5LmZpbGVzeXN0ZW0oKSA9PSB0aGlzKTsKIAogICAgIFN0cmluZyBkaXJlY3RvcnlWaXJ0
dWFsUGF0aCA9IGRpcmVjdG9yeS52aXJ0dWFsUGF0aCgpOwotICAgIGF1dG8gZnVsbFBhdGggPSBl
dmFsdWF0ZVBhdGgoZGlyZWN0b3J5VmlydHVhbFBhdGgpOworICAgIFN0cmluZyBmdWxsUGF0aCA9
IGV2YWx1YXRlUGF0aChkaXJlY3RvcnlWaXJ0dWFsUGF0aCk7CiAgICAgaWYgKGZ1bGxQYXRoID09
IG1fcm9vdFBhdGgpIHsKICAgICAgICAgVmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+PiBjaGls
ZHJlbjsKICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGZpbGVBc0VudHJ5KGNvbnRleHQpKTsKQEAg
LTE5MiwyMCArMjM0LDc2IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyCiAgICAgfSk7CiB9CiAK
K3N0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlkYXRlUGF0aElzRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgsIFN0cmluZyYmIHZpcnR1YWxQYXRoKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFmaWxlSXNEaXJlY3RvcnkoZnVsbFBhdGgsIFNo
b3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdEZvdW5kRXJyb3IsICJQYXRoIG5vIGxvbmdlciBleGlzdHMgb3IgaXMgbm8gbG9uZ2VyIGEg
ZGlyZWN0b3J5IiB9OworICAgIHJldHVybiBXVEZNb3ZlKHZpcnR1YWxQYXRoKTsKK30KKwogdm9p
ZCBET01GaWxlU3lzdGVtOjpnZXRQYXJlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRmlsZVN5c3RlbUVudHJ5JiBlbnRyeSwgR2V0UGFyZW50Q2FsbGJhY2smJiBjb21wbGV0aW9u
Q2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nIHZpcnR1YWxQYXRoID0gcmVzb2x2ZVJlbGF0aXZlUGF0
aChlbnRyeS52aXJ0dWFsUGF0aCgpLCBBU0NJSUxpdGVyYWwoIi4uIikpOworICAgIEFTU0VSVCgm
ZW50cnkuZmlsZXN5c3RlbSgpID09IHRoaXMpOworCisgICAgU3RyaW5nIHZpcnR1YWxQYXRoID0g
cmVzb2x2ZVJlbGF0aXZlVmlydHVhbFBhdGgoZW50cnkudmlydHVhbFBhdGgoKSwgIi4uIik7CiAg
ICAgQVNTRVJUKHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CiAgICAgU3RyaW5nIGZ1bGxQYXRoID0g
ZXZhbHVhdGVQYXRoKHZpcnR1YWxQYXRoKTsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIGNvbnRleHQgPSBtYWtlUmVmKGNvbnRleHQpLCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29w
eShmdWxsUGF0aCksIHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwg
Y29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFi
bGUgewotICAgICAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rczo6Tm8pKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21w
bGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldIHsKLSAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIlBh
dGggbm8gbG9uZ2VyIGV4aXN0cyBvciBpcyBubyBsb25nZXIgYSBkaXJlY3RvcnkiIH0pOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIHZpcnR1YWxQ
YXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0g
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uQ2Fs
bGJhY2soRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMsIHZp
cnR1YWxQYXRoKSk7CisgICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0
ZVBhdGhJc0RpcmVjdG9yeShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCkpOworICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgdmFs
aWRhdGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgp
LCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAodmFsaWRhdGVkVmlydHVhbFBhdGguaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHZhbGlkYXRlZFZpcnR1YWxQ
YXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGNv
bnRleHQsICp0aGlzLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworc3RhdGljIEV4Y2VwdGlvbk9yPFN0cmluZz4g
dmFsaWRhdGVQYXRoSXNGaWxlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0cmluZyYmIHZpcnR1
YWxQYXRoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAgRmlsZU1ldGFk
YXRhIG1ldGFkYXRhOworICAgIGlmICghZ2V0RmlsZU1ldGFkYXRhKGZ1bGxQYXRoLCBtZXRhZGF0
YSwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJGaWxlIGRvZXMgbm90IGV4aXN0Iikg
fTsKKworICAgIGlmIChtZXRhZGF0YS50eXBlICE9IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGUpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlTWlzbWF0Y2hFcnJvciwgQVNDSUlMaXRlcmFs
KCJFbnRyeSBhdCBwYXRoIGlzIG5vdCBhIGZpbGUiKSB9OworCisgICAgcmV0dXJuIFdURk1vdmUo
dmlydHVhbFBhdGgpOworfQorCisvLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBp
LyNkb20tZmlsZXN5c3RlbWRpcmVjdG9yeWVudHJ5LWdldGZpbGUKK3ZvaWQgRE9NRmlsZVN5c3Rl
bTo6Z2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29uc3Qg
RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpGbGFncyYgZmxhZ3MsIEdldEZpbGVDYWxsYmFjayYm
IGNvbXBsZXRpb25DYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoJmRpcmVjdG9yeS5maWxlc3lzdGVt
KCkgPT0gdGhpcyk7CisKKyAgICBpZiAoIWlzVmFsaWRWaXJ0dWFsUGF0aCh2aXJ0dWFsUGF0aCkp
IHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92
ZShjb21wbGV0aW9uQ2FsbGJhY2spXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2so
RXhjZXB0aW9uIHsgVHlwZU1pc21hdGNoRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGF0aCBpcyBpbnZh
bGlkIikgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGZsYWdzLmNyZWF0ZSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoImNy
ZWF0ZSBmbGFnIGNhbm5vdCBiZSB0cnVlIikgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU3RyaW5nIHJlc29sdmVkVmlydHVhbFBhdGggPSByZXNvbHZlUmVs
YXRpdmVWaXJ0dWFsUGF0aChkaXJlY3RvcnkudmlydHVhbFBhdGgoKSwgdmlydHVhbFBhdGgpOwor
ICAgIEFTU0VSVChyZXNvbHZlZFZpcnR1YWxQYXRoWzBdID09ICcvJyk7CisgICAgU3RyaW5nIGZ1
bGxQYXRoID0gZXZhbHVhdGVQYXRoKHJlc29sdmVkVmlydHVhbFBhdGgpOworICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgcmVzb2x2ZWRWaXJ0dWFsUGF0aCA9IGNyb3Nz
VGhyZWFkQ29weShyZXNvbHZlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNGaWxlKGZ1bGxQYXRoLCBXVEZNb3ZlKHJl
c29sdmVkVmlydHVhbFBhdGgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY29u
dGV4dCA9IFdURk1vdmUoY29udGV4dCksIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJl
YWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92
ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHZhbGlk
YXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlU3lz
dGVtRmlsZUVudHJ5OjpjcmVhdGUoY29udGV4dCwgKnRoaXMsIHZhbGlkYXRlZFZpcnR1YWxQYXRo
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKaW5kZXgg
ZDVhNDg5YzkyOWMyZWI1NTkzYzc4NzUxYzY4Mzk2N2VhMDdiZTdjMi4uYTgzMzk4ZTk1MTg1ZDMy
MDE1ZTg5ZmM1NGZjM2M4NGNiNWViZjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CkBAIC0zNCw3ICsz
NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGU7Ci1jbGFzcyBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk7CitjbGFzcyBGaWxlU3lzdGVtRmlsZUVudHJ5OwogY2xhc3MgRmls
ZVN5c3RlbUVudHJ5OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIApAQCAtNTcsNiAr
NTgsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgR2V0UGFyZW50Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeT4+JiYpPjsK
ICAgICB2b2lkIGdldFBhcmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUVu
dHJ5JiwgR2V0UGFyZW50Q2FsbGJhY2smJik7CiAKKyAgICB1c2luZyBHZXRGaWxlQ2FsbGJhY2sg
PSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGVTeXN0ZW1GaWxlRW50cnk+
PiYmKT47CisgICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkmLCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoLCBjb25zdCBGaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnk6OkZsYWdzJiwgR2V0RmlsZUNhbGxiYWNrJiYpOworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IERPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RGlyZWN0b3J5RW50cnkuY3BwCmluZGV4IDZhZTg2NzUyYzQzNjYzMGU1OTI1ODg1NjEwMzIxYTY0
MjM3YWU3NWUuLjFjMjgxMTY3NjlkNWU1ZjVkMWIzYmQ4MDQyM2U0YjA5NWE3MWNiZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxl
U3lzdGVtRGlyZWN0b3J5RW50cnkuY3BwCkBAIC0yNyw4ICsyNywxMiBAQAogI2luY2x1ZGUgIkZp
bGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIgogCiAjaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiCisj
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmgiCisjaW5jbHVkZSAiRmlsZVN5c3Rl
bUVudHJ5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtRmlsZUVudHJ5LmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQyLDEwICs0NiwyMCBAQCBSZWY8RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcj4gRmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoU2NyaXB0RXhlYwogICAgIHJldHVybiBG
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUoY29udGV4dCwgKnRoaXMpOwogfQogCi12
b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBGbGFncyYsIFJlZlB0cjxGaWxlU3lz
dGVtRW50cnlDYWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKK3ZvaWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmxhZ3MmIGZsYWdz
LCBSZWZQdHI8RmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQogewotICAgIGlmIChlcnJvckNhbGxi
YWNrKQotICAgICAgICBlcnJvckNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIERP
TUV4Y2VwdGlvbjo6Y3JlYXRlKE5vdFN1cHBvcnRlZEVycm9yKSk7CisgICAgaWYgKCFzdWNjZXNz
Q2FsbGJhY2sgJiYgIWVycm9yQ2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGZpbGVz
eXN0ZW0oKS5nZXRGaWxlKGNvbnRleHQsICp0aGlzLCBwYXRoLCBmbGFncywgW3RoaXMsIHBlbmRp
bmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdWNjZXNzQ2FsbGJhY2sg
PSBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIGVycm9yQ2FsbGJhY2sgPSBXVEZNb3ZlKGVycm9y
Q2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgICAg
IGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KERPTUV4Y2VwdGlvbjo6Y3JlYXRlKHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5o
YW5kbGVFdmVudChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIH0pOwogfQogCiB2
b2lkIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsYWdzJiwgUmVmUHRyPEZp
bGVTeXN0ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDYwNWE0MzkzZWExYzQ5OTFiZTk3M2I5ODJhMTA2YWE3YzBhYjAyMWMu
LjhjNzk2NzQ0ZDlkNjc5ZmMwM2E0NGExMTQ0ZDhiNjMwNTlhNDQyZjUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwxOCBAQAogMjAxNy0wOS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisg
ICAgICAgIEltcGxlbWVudCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuZ2V0RmlsZSgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYxNjcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTg3Nzc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRGaWxlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1kcm9wLWdldEZpbGUuaHRtbDogQWRkZWQuCisKKzIwMTctMDktMDEgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgRmlsZVN5c3Rl
bUVudHJ5LmdldFBhcmVudCgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYxNjUKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0MTg3NzQzPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVt
cy1kcm9wLWdldEZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEZpbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJmMWMxZWRjMDczNDJiMzZiNjIzNmYyN2U5NmM0ZWZhY2ViMTNjNWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZ2V0RmlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0OCBAQAorQmFzaWMgdGVzdCBj
b3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldEZpbGUoKQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoIGlz
IDEKKyogRXJyb3IgY2FzZTogY3JlYXRlIGZsYWcgaXMgc2V0IHRvIHRydWUKK1BBU1MgZXgubmFt
ZSBpcyAiU2VjdXJpdHlFcnJvciIKKyogUmVndWxhciBjYXNlOiBnZXRGaWxlKCdmaWxlMS50eHQn
KQorUEFTUyBmaWxlMUVudHJ5Lm5hbWUgaXMgImZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5m
dWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9maWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuaXNGaWxl
IGlzIHRydWUKKyogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIHRvIGZv
bGRlcgorUEFTUyBleC5uYW1lIGlzICJUeXBlTWlzbWF0Y2hFcnJvciIKKyogRXJyb3IgY2FzZTog
Y2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIGNvbnRhaW5pbmcgYmFja3NsYXNoCitQQVNTIGV4
Lm5hbWUgaXMgIlR5cGVNaXNtYXRjaEVycm9yIgorKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZp
bGUoKSB3aXRoIHBhdGggd2hpY2ggZG9lcyBub3QgZXhpc3QKK1BBU1MgZXgubmFtZSBpcyAiTm90
Rm91bmRFcnJvciIKKyogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIGNv
bnRhaW5pbmcgYSBOVUwgY2hhcmFjdGVyCitQQVNTIGV4Lm5hbWUgaXMgIlR5cGVNaXNtYXRjaEVy
cm9yIgorKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBhdGggdG8gcm9vdAor
UEFTUyBleC5uYW1lIGlzICJUeXBlTWlzbWF0Y2hFcnJvciIKKyogUmVndWxhciBjYXNlOiBjYWxs
aW5nIGdldEZpbGUoKSB3aXRoIGFic29sdXRlIHBhdGgKK1BBU1MgZmlsZTNFbnRyeS5uYW1lIGlz
ICJmaWxlMy50eHQiCitQQVNTIGZpbGUzRW50cnkuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3Vi
Zm9sZGVyMS9maWxlMy50eHQiCitQQVNTIGZpbGUzRW50cnkuaXNGaWxlIGlzIHRydWUKKyogRWRn
ZSBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHJlbGF0aXZlIHBhdGggY29udGFpbmluZyAn
LicgYW5kICcuLicKK1BBU1MgZmlsZTNFbnRyeS5uYW1lIGlzICJmaWxlMy50eHQiCitQQVNTIGZp
bGUzRW50cnkuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMS9maWxlMy50eHQiCitQ
QVNTIGZpbGUzRW50cnkuaXNGaWxlIGlzIHRydWUKKyogRWRnZSBjYXNlOiBjYWxsaW5nIGdldEZp
bGUoKSB3aXRoIHJlbGF0aXZlIHBhdGggY29udGFpbmluZyB0b28gbWFueSAnLi4nCitQQVNTIGZp
bGUxRW50cnkubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBmaWxlMUVudHJ5LmZ1bGxQYXRoIGlz
ICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5pc0ZpbGUgaXMgdHJ1ZQor
KiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1dGUgcGF0aCBjb250YWlu
aW5nICcuLicKK1BBU1MgZmlsZTFFbnRyeS5uYW1lIGlzICJmaWxlMS50eHQiCitQQVNTIGZpbGUx
RW50cnkuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBmaWxlMUVudHJ5
LmlzRmlsZSBpcyB0cnVlCisqIEVkZ2UgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBhYnNv
bHV0ZSBwYXRoIGNvbnRhaW5pbmcgdG9vIG1hbnkgJy4uJworUEFTUyBmaWxlMUVudHJ5Lm5hbWUg
aXMgImZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5mdWxsUGF0aCBpcyAiL3Rlc3RGaWxlcy9m
aWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuaXNGaWxlIGlzIHRydWUKKyogRXJyb3IgY2FzZTog
Y2FsbGluZyBnZXRGaWxlKCkgd2l0aCBlbXB0eSBwYXRoCitQQVNTIGV4Lm5hbWUgaXMgIlR5cGVN
aXNtYXRjaEVycm9yIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRh
dHJhbnNmZXItaXRlbXMtZHJvcC1nZXRGaWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAyYzIxOWM1MTQ3MmJjZDNkMTFkYWJjNTYyOWU5ZmI2OWJlYWZhNjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtZ2V0RmlsZS5odG1sCkBAIC0wLDAgKzEsMTk1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkcm9wem9uZSIgc3R5bGU9IndpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBw
eDsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJCYXNpYyB0ZXN0IGNvdmVyYWdlIGZvciBmaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuZ2V0Rmls
ZSgpIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gZ2V0RmlsZUFzUHJvbWlz
ZShkaXJlY3RvcnksIHBhdGgsIGZsYWdzKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGRpcmVjdG9yeS5nZXRGaWxlKHBhdGgsIGZsYWdz
LCByZXNvbHZlLCByZWplY3QpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAg
ICBkZWJ1ZygiKiBFcnJvciBjYXNlOiBjcmVhdGUgZmxhZyBpcyBzZXQgdG8gdHJ1ZSIpOworICAg
IHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiZmlsZTEudHh0IiwgeyBj
cmVhdGU6IHRydWUgfSkudGhlbihlbnRyeSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNob3Vs
ZCBmYWlsIHdoZW4gY3JlYXRlIGZsYWcgaXMgdHJ1ZSIpOworICAgIH0sIGUgPT4geworICAgICAg
ICBleCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJTZWN1
cml0eUVycm9yIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAgIGRlYnVn
KCIqIFJlZ3VsYXIgY2FzZTogZ2V0RmlsZSgnZmlsZTEudHh0JykiKTsKKyAgICByZXR1cm4gZ2V0
RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgImZpbGUxLnR4dCIsIHt9KS50aGVuKGVudHJ5
ID0+IHsKKyAgICAgICAgZmlsZTFFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImZpbGUxRW50cnkubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJmaWxlMUVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvZmlsZTEu
dHh0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTFFbnRyeS5pc0ZpbGUiKTsKKyAgICB9
LCBlID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0RmlsZSgnZmlsZTEudHh0Jykgc2hvdWxk
IHN1Y2NlZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgZGVidWco
IiogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIHRvIGZvbGRlciIpOwor
ICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAic3ViZm9sZGVyMSIs
IHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGZhaWwgd2hl
biBwYXRoIHBvaW50cyB0byBhIGZvbGRlciIpOworICAgIH0sIGUgPT4geworICAgICAgICBleCA9
IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJUeXBlTWlzbWF0
Y2hFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICBkZWJ1Zygi
KiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBhdGggY29udGFpbmluZyBiYWNr
c2xhc2giKTsKKyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgIlxc
ZmlsZTEudHh0Iiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91
bGQgZmFpbCB3aGVuIHBhdGggaXMgaW52YWxpZCIpOworICAgIH0sIGUgPT4geworICAgICAgICBl
eCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJUeXBlTWlz
bWF0Y2hFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBkZWJ1
ZygiKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBhdGggd2hpY2ggZG9lcyBu
b3QgZXhpc3QiKTsKKyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwg
ImRvZXNub3RleGlzdC50eHQiLCB7fSkudGhlbihlbnRyeSA9PiB7CisgICAgICAgIHRlc3RGYWls
ZWQoIlNob3VsZCBmYWlsIHdoZW4gcGF0aCBkb2VzIG5vdCBleGlzdCIpOworICAgIH0sIGUgPT4g
eworICAgICAgICBleCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFt
ZSIsICJOb3RGb3VuZEVycm9yIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3Q2KCkgewor
ICAgIGRlYnVnKCIqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCBjb250
YWluaW5nIGEgTlVMIGNoYXJhY3RlciIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRp
cmVjdG9yeUVudHJ5LCAiZmlsZTEudHh0XDAiLCB7fSkudGhlbihlbnRyeSA9PiB7CisgICAgICAg
IHRlc3RGYWlsZWQoIlNob3VsZCBmYWlsIHdoZW4gcGF0aCBpcyBpbnZhbGlkIik7CisgICAgfSwg
ZSA9PiB7CisgICAgICAgIGV4ID0gZTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
eC5uYW1lIiwgIlR5cGVNaXNtYXRjaEVycm9yIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRl
c3Q3KCkgeworICAgIGRlYnVnKCIqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGgg
cGF0aCB0byByb290Iik7CisgICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50
cnksICIvIiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQg
ZmFpbCB3aGVuIHBhdGggaXMgbm90IGEgZGlyZWN0b3J5Iik7CisgICAgfSwgZSA9PiB7CisgICAg
ICAgIGV4ID0gZTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJleC5uYW1lIiwgIlR5
cGVNaXNtYXRjaEVycm9yIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3Q4KCkgeworICAg
IGRlYnVnKCIqIFJlZ3VsYXIgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBhYnNvbHV0ZSBw
YXRoIik7CisgICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICIvdGVz
dEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0Iiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAg
ICBmaWxlM0VudHJ5ID0gZW50cnk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmls
ZTNFbnRyeS5uYW1lIiwgImZpbGUzLnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImZpbGUzRW50cnkuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIxL2ZpbGUzLnR4
dCIpOworICAgICAgICBzaG91bGRCZVRydWUoImZpbGUzRW50cnkuaXNGaWxlIik7CisgICAgfSwg
ZSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoImdldEZpbGUoJy90ZXN0RmlsZXMvc3ViZm9sZGVy
MS9maWxlMy50eHQnKSBob3VsZCBzdWNjZWVkIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRl
c3Q5KCkgeworICAgIGRlYnVnKCIqIEVkZ2UgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBy
ZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgJy4nIGFuZCAnLi4nIik7CisgICAgcmV0dXJuIGdldEZp
bGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICIuLi90ZXN0RmlsZXMvLi8uL3N1YmZvbGRlcjEv
Li4vc3ViZm9sZGVyMS8uL2ZpbGUzLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAg
ZmlsZTNFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUz
RW50cnkubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJmaWxlM0VudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMS9maWxlMy50eHQi
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJmaWxlM0VudHJ5LmlzRmlsZSIpOworICAgIH0sIGUg
PT4geworICAgICAgICB0ZXN0RmFpbGVkKCJnZXRGaWxlKCcuLi90ZXN0RmlsZXMvLi8uL3N1YmZv
bGRlcjEvLi4vc3ViZm9sZGVyMS8uL2ZpbGUzLnR4dCcpIGhvdWxkIHN1Y2NlZWQiKTsKKyAgICB9
KTsKK30KKworZnVuY3Rpb24gdGVzdDEwKCkgeworICAgIGRlYnVnKCIqIEVkZ2UgY2FzZTogY2Fs
bGluZyBnZXRGaWxlKCkgd2l0aCByZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgdG9vIG1hbnkgJy4u
JyIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiLi4vLi4v
Li4vLi4vLi4vdGVzdEZpbGVzL2ZpbGUxLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAg
ICAgZmlsZTFFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZp
bGUxRW50cnkubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmaWxlMUVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvZmlsZTEudHh0Iik7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTFFbnRyeS5pc0ZpbGUiKTsKKyAgICB9LCBlID0+IHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZ2V0RmlsZSgnLi4vLi4vLi4vLi4vLi4vdGVzdEZpbGVzL2ZpbGUx
LnR4dCcpIGhvdWxkIHN1Y2NlZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDExKCkg
eworICAgIGRlYnVnKCIqIEVkZ2UgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBhYnNvbHV0
ZSBwYXRoIGNvbnRhaW5pbmcgJy4uJyIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRp
cmVjdG9yeUVudHJ5LCAiL3Rlc3RGaWxlcy8uLi90ZXN0RmlsZXMvZmlsZTEudHh0Iiwge30pLnRo
ZW4oZW50cnkgPT4geworICAgICAgICBmaWxlMUVudHJ5ID0gZW50cnk7CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZmlsZTFFbnRyeS5uYW1lIiwgImZpbGUxLnR4dCIpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUxRW50cnkuZnVsbFBhdGgiLCAiL3Rlc3RGaWxl
cy9maWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJmaWxlMUVudHJ5LmlzRmlsZSIp
OworICAgIH0sIGUgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJnZXRGaWxlKCcuLi8uLi8uLi8u
Li8uLi90ZXN0RmlsZXMvZmlsZTEudHh0JykgaG91bGQgc3VjY2VlZCIpOworICAgIH0pOworfQor
CitmdW5jdGlvbiB0ZXN0MTIoKSB7CisgICAgZGVidWcoIiogRWRnZSBjYXNlOiBjYWxsaW5nIGdl
dEZpbGUoKSB3aXRoIGFic29sdXRlIHBhdGggY29udGFpbmluZyB0b28gbWFueSAnLi4nIik7Cisg
ICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICIvLi4vLi4vLi4vLi4v
Li4vdGVzdEZpbGVzL2ZpbGUxLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgZmls
ZTFFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUxRW50
cnkubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJm
aWxlMUVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvZmlsZTEudHh0Iik7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiZmlsZTFFbnRyeS5pc0ZpbGUiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAg
dGVzdEZhaWxlZCgiZ2V0RmlsZSgnLi4vLi4vLi4vLi4vLi4vdGVzdEZpbGVzL2ZpbGUxLnR4dCcp
IGhvdWxkIHN1Y2NlZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDEzKCkgeworICAg
IGRlYnVnKCIqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggZW1wdHkgcGF0aCIp
OworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiIiwge30pLnRo
ZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgZmFpbCB3aGVuIHBhdGgg
aXMgaW52YWxpZCIpOworICAgIH0sIGUgPT4geworICAgICAgICBleCA9IGU7CisgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJUeXBlTWlzbWF0Y2hFcnJvciIpOworICAg
IH0pOworfQorCit2YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJvcHpv
bmUnKTsKK2Ryb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnREZWZh
dWx0KCk7CisgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91bGRC
ZSgiZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCIsICIxIik7CisKKyAgICBkaXJlY3RvcnlFbnRy
eSA9IGRhdGFUcmFuc2Zlci5pdGVtc1swXS53ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgdGVzdDEo
KQorICAgIC50aGVuKHRlc3QyKQorICAgIC50aGVuKHRlc3QzKQorICAgIC50aGVuKHRlc3Q0KQor
ICAgIC50aGVuKHRlc3Q1KQorICAgIC50aGVuKHRlc3Q2KQorICAgIC50aGVuKHRlc3Q3KQorICAg
IC50aGVuKHRlc3Q4KQorICAgIC50aGVuKHRlc3Q5KQorICAgIC50aGVuKHRlc3QxMCkKKyAgICAu
dGhlbih0ZXN0MTEpCisgICAgLnRoZW4odGVzdDEyKQorICAgIC50aGVuKHRlc3QxMykKKyAgICAu
dGhlbihmaW5pc2hKU1Rlc3QpOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0aW9u
KGV2KSB7CisgICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9mb3Jt
cy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjU0
NGY2NTdmN2E4MGE4ZGVmZWZlMGM2MTIwMjgyNWI5Nzg2MmIwYS4uMWE2ZGIxZmY5YjQ4ZTZkYjhk
Yjg0ODJmODFjNWNmMThiYjNlYzg1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTU2Nyw2ICs1NjcsNyBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXJyb3IuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRlci1y
b290Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRB
c0VudHJ5Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1n
ZXRGaWxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1n
ZXRQYXJlbnQtcm9vdC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1z
LWRyb3AtZ2V0UGFyZW50Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRl
bXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319671</attachid>
            <date>2017-09-01 16:49:25 -0700</date>
            <delta_ts>2017-09-01 17:19:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176167-20170901164924.patch</filename>
            <type>text/plain</type>
            <size>25677</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2MjVkZDA1ZDVmYjUz
OTYyYjZmMTZlNTQ2NjlhNzZhYmIzM2QxNi4uZGVjNGMzNGIyZmQyZWFhNDU0N2E1NmI0ZmIyNzlj
ODJjYWE5ZDI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE3LTA5LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxODc3
NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBJbXBs
ZW1lbnQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldEZpbGUoKToKKyAgICAgICAgLSBodHRw
czovL3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNkb20tZmlsZXN5c3RlbWRpcmVjdG9yeWVu
dHJ5LWdldGZpbGUKKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkUGF0aE5hbWVD
aGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFBhdGhTZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzVmFsaWRSZWxhdGl2ZVZpcnR1YWxQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzVmFsaWRBYnNvbHV0ZVZpcnR1YWxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFs
aWRWaXJ0dWFsUGF0aCk6CisgICAgICAgIEltcGxlbWVudCB2YXJpb3VzIHBhdGggdmFsaWRhdGlv
biBmdW5jdGlvbnMgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50
cmllcy1hcGkvI25hbWVzLXBhdGhzCisKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZWxhdGl2
ZVZpcnR1YWxQYXRoKToKKyAgICAgICAgLSBVc2UgU3RyaW5nVmlldyBmb3Igc2Vjb25kIHBhcmFt
ZXRlciBmb3IgZWZmaWNpZW5jeS4gSGFkIHRvIGtlZXAKKyAgICAgICAgICBhIFN0cmluZyBmb3Ig
dGhlIGZpcnN0IHBhcmFtZXRlciBiZWNhdXNlIEkgbmVlZCB0aGUgc3BsaXQgdG8KKyAgICAgICAg
ICByZXR1cm4gYSBWZWN0b3IuCisgICAgICAgIC0gSWYgdGhlIGlucHV0IHBhdGggaXMgYWJzb2x1
dGUsIGNhbGwgcmVjdXJzaXZlbHkgd2l0aCAnLycgYXMKKyAgICAgICAgICBiYXNlIHBhdGggc28g
dGhhdCB0aGUgdmlydHVhbCBwYXRoIGdldHMgc2FuaXRpemVkIChpLmUuICcuLicKKyAgICAgICAg
ICBhbmQgJy4nIGluIHRoZSBhYnNvbHV0ZSBVUkwgZ2V0IHJlc29sdmVkKS4KKworICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSk6CisgICAgICAgIFVzZSBTdHJp
bmcgaW5zdGVhZCBvZiBhdXRvLiBJdCBpcyBub3QgbXVjaCBsb25nZXIgYW5kIGlzIGNsZWFyZXIu
CisKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUGF0aElzRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldFBhcmVudCk6CisgICAgICAgIE1vdmUgbG9naWMg
dG8gdmFsaWRhdGUgdGhhdCB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSBmcm9tIGdldFBhcmVudCgp
IHRvIGEKKyAgICAgICAgc2VwYXJhdGUgZnVuY3Rpb24uIFRoaXMgb25seSBtYWtlcyBzdXJlIHRo
ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIG9ubHkKKyAgICAgICAgcmVmJ2QgLyBkZXJlZidk
IG9uIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQYXRoSXNG
aWxlKToKKyAgICAgICAgTG9naWMgZm9yIHZhbGlkYXRpbmcgdGhhdCBhIHBhdGggaXMgYSBmaWxl
LCB1c2VkIGJ5IGdldEZpbGUoKS4KKworICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6
Z2V0RmlsZSk6CisgICAgICAgIEltcGxlbWVudCBnZXRGaWxlKCkgYXMgcGVyOgorICAgICAgICAt
IGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2RvbS1maWxlc3lzdGVtZGlyZWN0
b3J5ZW50cnktZ2V0ZmlsZQorCisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeTo6
Z2V0RmlsZSk6CisgICAgICAgIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lzdGVtRGlyZWN0
b3J5RW50cnk6OmdldEZpbGUoKSB3aGljaCBtZXJlbHkgY2FsbHMKKyAgICAgICAgRE9NRmlsZVN5
c3RlbTo6Z2V0RmlsZSgpLgorCisyMDE3LTA5LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKICAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1FbnRyeS5nZXRQYXJlbnQoKQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MTY1CiAg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAyNTUwYmMzOTNiM2I4
NTY3M2VmNGNhMzEwYWIwY2Q4MTE1NDc1YjIzLi42YjBhM2JiMTQ1YjBlZWY3ZjgxN2MwZWIyMzdm
MGJhZWU0ZWFiZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC04Nyw5ICs4Nyw1MSBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8VmVjdG9yPFJlZjxGaWxlU3lzdGVtRW50cnk+Pj4gdG9GaWxlU3lzdGVtRW50cmllcyhTY3Jp
cHRFeGVjdQogICAgIHJldHVybiBXVEZNb3ZlKGVudHJpZXMpOwogfQogCi1zdGF0aWMgYm9vbCBp
c0Fic29sdXRlVmlydHVhbFBhdGgoY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKKy8vIGh0dHBz
Oi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI25hbWUKK3N0YXRpYyBib29sIGlzVmFsaWRQ
YXRoTmFtZUNoYXJhY3RlcihVQ2hhciBjKQogewotICAgIHJldHVybiAhdmlydHVhbFBhdGguaXNF
bXB0eSgpICYmIHZpcnR1YWxQYXRoWzBdID09ICcvJzsKKyAgICByZXR1cm4gYyAhPSAnXDAnICYm
IGMgIT0gJy8nICYmIGMgIT0gJ1xcJzsKK30KKworLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9l
bnRyaWVzLWFwaS8jcGF0aC1zZWdtZW50CitzdGF0aWMgYm9vbCBpc1ZhbGlkUGF0aFNlZ21lbnQo
U3RyaW5nVmlldyBzZWdtZW50KQoreworICAgIEFTU0VSVCghc2VnbWVudC5pc0VtcHR5KCkpOwor
ICAgIGlmIChzZWdtZW50ID09ICIuIiB8fCBzZWdtZW50ID09ICIuLiIpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnQubGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBpZiAoIWlzVmFsaWRQYXRoTmFtZUNoYXJhY3RlcihzZWdtZW50W2ld
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI3JlbGF0aXZlLXBhdGgK
K3N0YXRpYyBib29sIGlzVmFsaWRSZWxhdGl2ZVZpcnR1YWxQYXRoKFN0cmluZ1ZpZXcgdmlydHVh
bFBhdGgpCit7CisgICAgaWYgKHZpcnR1YWxQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKHZpcnR1YWxQYXRoWzBdID09ICcvJykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBzZWdtZW50cyA9IHZpcnR1YWxQYXRoLnNwbGl0KCcvJyk7Cisg
ICAgZm9yIChhdXRvIHNlZ21lbnQgOiBzZWdtZW50cykgeworICAgICAgICBpZiAoIWlzVmFsaWRQ
YXRoU2VnbWVudChzZWdtZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1h
cGkvI3ZhbGlkLXBhdGgKK3N0YXRpYyBib29sIGlzVmFsaWRWaXJ0dWFsUGF0aChTdHJpbmdWaWV3
IHZpcnR1YWxQYXRoKQoreworICAgIGlmICh2aXJ0dWFsUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAodmlydHVhbFBhdGhbMF0gPT0gJy8nKQorICAgICAgICBy
ZXR1cm4gaXNWYWxpZFJlbGF0aXZlVmlydHVhbFBhdGgodmlydHVhbFBhdGguc3Vic3RyaW5nKDEp
KTsKKyAgICByZXR1cm4gaXNWYWxpZFJlbGF0aXZlVmlydHVhbFBhdGgodmlydHVhbFBhdGgpOwog
fQogCiBET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmIGZpbGUpCkBAIC0x
MTgsMTUgKzE2MCwxNSBAQCBSZWY8RmlsZVN5c3RlbUVudHJ5PiBET01GaWxlU3lzdGVtOjpmaWxl
QXNFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogfQogCiAvLyBodHRwczov
L3dpY2cuZ2l0aHViLmlvL2VudHJpZXMtYXBpLyNyZXNvbHZlLWEtcmVsYXRpdmUtcGF0aAotc3Rh
dGljIFN0cmluZyByZXNvbHZlUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgs
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoKQorc3RhdGljIFN0cmluZyByZXNvbHZlUmVsYXRp
dmVWaXJ0dWFsUGF0aChjb25zdCBTdHJpbmcmIGJhc2VWaXJ0dWFsUGF0aCwgU3RyaW5nVmlldyBy
ZWxhdGl2ZVZpcnR1YWxQYXRoKQogewotICAgIEFTU0VSVCh2aXJ0dWFsUGF0aFswXSA9PSAnLycp
OwotICAgIGlmIChpc0Fic29sdXRlVmlydHVhbFBhdGgocmVsYXRpdmVQYXRoKSkKLSAgICAgICAg
cmV0dXJuIHJlbGF0aXZlUGF0aDsKKyAgICBBU1NFUlQoYmFzZVZpcnR1YWxQYXRoWzBdID09ICcv
Jyk7CisgICAgaWYgKHJlbGF0aXZlVmlydHVhbFBhdGhbMF0gPT0gJy8nKQorICAgICAgICByZXR1
cm4gcmVzb2x2ZVJlbGF0aXZlVmlydHVhbFBhdGgoQVNDSUlMaXRlcmFsKCIvIiksIHJlbGF0aXZl
VmlydHVhbFBhdGguc3Vic3RyaW5nKDEpKTsKIAotICAgIGF1dG8gdmlydHVhbFBhdGhTZWdtZW50
cyA9IHZpcnR1YWxQYXRoLnNwbGl0KCcvJyk7Ci0gICAgYXV0byByZWxhdGl2ZVBhdGhTZWdtZW50
cyA9IHJlbGF0aXZlUGF0aC5zcGxpdCgnLycpOwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHJl
bGF0aXZlUGF0aFNlZ21lbnRzKSB7CisgICAgYXV0byB2aXJ0dWFsUGF0aFNlZ21lbnRzID0gYmFz
ZVZpcnR1YWxQYXRoLnNwbGl0KCcvJyk7CisgICAgYXV0byByZWxhdGl2ZVBhdGhTZWdtZW50cyA9
IHJlbGF0aXZlVmlydHVhbFBhdGguc3BsaXQoJy8nKTsKKyAgICBmb3IgKGF1dG8gc2VnbWVudCA6
IHJlbGF0aXZlUGF0aFNlZ21lbnRzKSB7CiAgICAgICAgIEFTU0VSVCghc2VnbWVudC5pc0VtcHR5
KCkpOwogICAgICAgICBpZiAoc2VnbWVudCA9PSAiLiIpCiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTEzNSw3ICsxNzcsNyBAQCBzdGF0aWMgU3RyaW5nIHJlc29sdmVSZWxhdGl2ZVBhdGgoY29u
c3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdAogICAgICAgICAgICAg
ICAgIHZpcnR1YWxQYXRoU2VnbWVudHMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgdmlydHVhbFBhdGhTZWdtZW50cy5hcHBlbmQoc2VnbWVu
dCk7CisgICAgICAgIHZpcnR1YWxQYXRoU2VnbWVudHMuYXBwZW5kKHNlZ21lbnQudG9TdHJpbmco
KSk7CiAgICAgfQogCiAgICAgaWYgKHZpcnR1YWxQYXRoU2VnbWVudHMuaXNFbXB0eSgpKQpAQCAt
MTc2LDcgKzIxOCw3IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyCiAgICAgQVNTRVJUKCZkaXJl
Y3RvcnkuZmlsZXN5c3RlbSgpID09IHRoaXMpOwogCiAgICAgU3RyaW5nIGRpcmVjdG9yeVZpcnR1
YWxQYXRoID0gZGlyZWN0b3J5LnZpcnR1YWxQYXRoKCk7Ci0gICAgYXV0byBmdWxsUGF0aCA9IGV2
YWx1YXRlUGF0aChkaXJlY3RvcnlWaXJ0dWFsUGF0aCk7CisgICAgU3RyaW5nIGZ1bGxQYXRoID0g
ZXZhbHVhdGVQYXRoKGRpcmVjdG9yeVZpcnR1YWxQYXRoKTsKICAgICBpZiAoZnVsbFBhdGggPT0g
bV9yb290UGF0aCkgewogICAgICAgICBWZWN0b3I8UmVmPEZpbGVTeXN0ZW1FbnRyeT4+IGNoaWxk
cmVuOwogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoZmlsZUFzRW50cnkoY29udGV4dCkpOwpAQCAt
MTkyLDIwICsyMzQsNzYgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXIKICAgICB9KTsKIH0KIAor
c3RhdGljIEV4Y2VwdGlvbk9yPFN0cmluZz4gdmFsaWRhdGVQYXRoSXNEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCwgU3RyaW5nJiYgdmlydHVhbFBhdGgpCit7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90Rm91bmRFcnJvciwgIlBhdGggbm8gbG9uZ2VyIGV4aXN0cyBvciBpcyBubyBsb25nZXIgYSBk
aXJlY3RvcnkiIH07CisgICAgcmV0dXJuIFdURk1vdmUodmlydHVhbFBhdGgpOworfQorCiB2b2lk
IERPTUZpbGVTeXN0ZW06OmdldFBhcmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGaWxlU3lzdGVtRW50cnkmIGVudHJ5LCBHZXRQYXJlbnRDYWxsYmFjayYmIGNvbXBsZXRpb25D
YWxsYmFjaykKIHsKLSAgICBTdHJpbmcgdmlydHVhbFBhdGggPSByZXNvbHZlUmVsYXRpdmVQYXRo
KGVudHJ5LnZpcnR1YWxQYXRoKCksIEFTQ0lJTGl0ZXJhbCgiLi4iKSk7CisgICAgQVNTRVJUKCZl
bnRyeS5maWxlc3lzdGVtKCkgPT0gdGhpcyk7CisKKyAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBy
ZXNvbHZlUmVsYXRpdmVWaXJ0dWFsUGF0aChlbnRyeS52aXJ0dWFsUGF0aCgpLCAiLi4iKTsKICAg
ICBBU1NFUlQodmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKICAgICBTdHJpbmcgZnVsbFBhdGggPSBl
dmFsdWF0ZVBhdGgodmlydHVhbFBhdGgpOwogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgY29udGV4dCA9IG1ha2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5
KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBj
b21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICghZmlsZUlzRGlyZWN0b3J5KGZ1bGxQYXRoLCBTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBs
ZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0gewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0
aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgdmlydHVhbFBh
dGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShjb250ZXh0LCAqdGhpcywgdmly
dHVhbFBhdGgpKTsKKyAgICAgICAgYXV0byB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IHZhbGlkYXRl
UGF0aElzRGlyZWN0b3J5KGZ1bGxQYXRoLCBXVEZNb3ZlKHZpcnR1YWxQYXRoKSk7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxp
ZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCks
IGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBh
dGgucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2soRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpjcmVhdGUoY29u
dGV4dCwgKnRoaXMsIHZhbGlkYXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCitzdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2
YWxpZGF0ZVBhdGhJc0ZpbGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCwgU3RyaW5nJiYgdmlydHVh
bFBhdGgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBGaWxlTWV0YWRh
dGEgbWV0YWRhdGE7CisgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEoZnVsbFBhdGgsIG1ldGFkYXRh
LCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBOb3RGb3VuZEVycm9yLCBBU0NJSUxpdGVyYWwoIkZpbGUgZG9lcyBub3QgZXhpc3QiKSB9
OworCisgICAgaWYgKG1ldGFkYXRhLnR5cGUgIT0gRmlsZU1ldGFkYXRhOjpUeXBlRmlsZSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVNaXNtYXRjaEVycm9yLCBBU0NJSUxpdGVyYWwo
IkVudHJ5IGF0IHBhdGggaXMgbm90IGEgZmlsZSIpIH07CisKKyAgICByZXR1cm4gV1RGTW92ZSh2
aXJ0dWFsUGF0aCk7Cit9CisKKy8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkv
I2RvbS1maWxlc3lzdGVtZGlyZWN0b3J5ZW50cnktZ2V0ZmlsZQordm9pZCBET01GaWxlU3lzdGVt
OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeSYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRoLCBjb25zdCBG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OkZsYWdzJiBmbGFncywgR2V0RmlsZUNhbGxiYWNrJiYg
Y29tcGxldGlvbkNhbGxiYWNrKQoreworICAgIEFTU0VSVCgmZGlyZWN0b3J5LmZpbGVzeXN0ZW0o
KSA9PSB0aGlzKTsKKworICAgIGlmICghaXNWYWxpZFZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoKSkg
eworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNvbXBsZXRpb25DYWxsYmFjayldIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhF
eGNlcHRpb24geyBUeXBlTWlzbWF0Y2hFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGlzIGludmFs
aWQiKSB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
ZmxhZ3MuY3JlYXRlKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25DYWxs
YmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0geworICAgICAgICAgICAgY29tcGxl
dGlvbkNhbGxiYWNrKEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiY3Jl
YXRlIGZsYWcgY2Fubm90IGJlIHRydWUiKSB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBTdHJpbmcgcmVzb2x2ZWRWaXJ0dWFsUGF0aCA9IHJlc29sdmVSZWxh
dGl2ZVZpcnR1YWxQYXRoKGRpcmVjdG9yeS52aXJ0dWFsUGF0aCgpLCB2aXJ0dWFsUGF0aCk7Cisg
ICAgQVNTRVJUKHJlc29sdmVkVmlydHVhbFBhdGhbMF0gPT0gJy8nKTsKKyAgICBTdHJpbmcgZnVs
bFBhdGggPSBldmFsdWF0ZVBhdGgocmVzb2x2ZWRWaXJ0dWFsUGF0aCk7CisgICAgbV93b3JrUXVl
dWUtPmRpc3BhdGNoKFt0aGlzLCBjb250ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgZnVsbFBhdGgg
PSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gdmFsaWRh
dGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0ZpbGUoZnVsbFBhdGgsIFdURk1vdmUocmVz
b2x2ZWRWaXJ0dWFsUGF0aCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjb250
ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgdmFsaWRhdGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVh
ZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAodmFsaWRh
dGVkVmlydHVhbFBhdGguaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkNhbGxiYWNrKHZhbGlkYXRlZFZpcnR1YWxQYXRoLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGVTeXN0
ZW1GaWxlRW50cnk6OmNyZWF0ZShjb250ZXh0LCAqdGhpcywgdmFsaWRhdGVkVmlydHVhbFBhdGgu
cmVsZWFzZVJldHVyblZhbHVlKCkpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCBk
NWE0ODljOTI5YzJlYjU1OTNjNzg3NTFjNjgzOTY3ZWEwN2JlN2MyLi5hODMzOThlOTUxODVkMzIw
MTVlODlmYzU0ZmMzYzg0Y2I1ZWJmMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtRGly
ZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KQEAgLTM0LDcgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZTsKLWNsYXNzIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeTsKK2NsYXNzIEZpbGVTeXN0ZW1GaWxlRW50cnk7CiBjbGFzcyBGaWxl
U3lzdGVtRW50cnk7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCkBAIC01Nyw2ICs1
OCw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBHZXRQYXJlbnRDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Pj4mJik+Owog
ICAgIHZvaWQgZ2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRW50
cnkmLCBHZXRQYXJlbnRDYWxsYmFjayYmKTsKIAorICAgIHVzaW5nIEdldEZpbGVDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWY8RmlsZVN5c3RlbUZpbGVFbnRyeT4+
JiYpPjsKKyAgICB2b2lkIGdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeTo6RmxhZ3MmLCBHZXRGaWxlQ2FsbGJhY2smJik7CisKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgRE9NRmlsZVN5c3RlbShSZWY8RmlsZT4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5jcHAKaW5kZXggNmFlODY3NTJjNDM2NjMwZTU5MjU4ODU2MTAzMjFhNjQy
MzdhZTc1ZS4uMWMyODExNjc2OWQ1ZTVmNWQxYjNiZDgwNDIzZTRiMDk1YTcxY2JkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1EaXJlY3Rv
cnlFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5jcHAKQEAgLTI3LDggKzI3LDEyIEBACiAjaW5jbHVkZSAiRmls
ZVN5c3RlbURpcmVjdG9yeUVudHJ5LmgiCiAKICNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVt
RW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1GaWxlRW50cnkuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDIsMTAgKzQ2LDIwIEBAIFJlZjxGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyPiBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcihTY3JpcHRFeGVjCiAgICAgcmV0dXJuIEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXI6OmNyZWF0ZShjb250ZXh0LCAqdGhpcyk7CiB9CiAKLXZv
aWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsYWdzJiwgUmVmUHRyPEZpbGVTeXN0
ZW1FbnRyeUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
KQordm9pZCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGbGFncyYgZmxhZ3Ms
IFJlZlB0cjxGaWxlU3lzdGVtRW50cnlDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgaWYgKGVycm9yQ2FsbGJh
Y2spCi0gICAgICAgIGVycm9yQ2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgRE9N
RXhjZXB0aW9uOjpjcmVhdGUoTm90U3VwcG9ydGVkRXJyb3IpKTsKKyAgICBpZiAoIXN1Y2Nlc3ND
YWxsYmFjayAmJiAhZXJyb3JDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgZmlsZXN5
c3RlbSgpLmdldEZpbGUoY29udGV4dCwgKnRoaXMsIHBhdGgsIGZsYWdzLCBbdGhpcywgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHN1Y2Nlc3NDYWxsYmFjayA9
IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJyb3JD
YWxsYmFjayldKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgeworICAgICAgICAgICAgaWYgKGVycm9yQ2FsbGJhY2spCisgICAgICAgICAgICAgICAg
ZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRE9NRXhjZXB0aW9uOjpjcmVhdGUocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiwgY29uc3QgRmxhZ3MmLCBSZWZQdHI8Rmls
ZVN5c3RlbUVudHJ5Q2FsbGJhY2s+JiYsIFJlZlB0cjxFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2Fs
bGJhY2spCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjA1YTQzOTNlYTFjNDk5MWJlOTczYjk4MmExMDZhYTdjMGFiMDIxYy4u
YmM5MWU2MTg2NDgxOWVjNzRiM2ZhZmY3OTQ4OTI2ZmNlZDc1YzNhMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDE4IEBACiAyMDE3LTA5LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAg
ICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjE2NworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzQxODc3NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVh
cyBLbGluZy4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtZHJvcC1nZXRGaWxlLmh0bWw6IEFkZGVkLgorCisyMDE3LTA5LTAxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgSW1wbGVtZW50IEZpbGVTeXN0ZW1F
bnRyeS5nZXRQYXJlbnQoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MTY1CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDE4Nzc0Mz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMt
ZHJvcC1nZXRGaWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1nZXRGaWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZjFjMWVkYzA3MzQyYjM2YjYyMzZmMjdlOTZjNGVmYWNlYjEzYzVkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLWdldEZpbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDggQEAKK0Jhc2ljIHRlc3QgY292
ZXJhZ2UgZm9yIGZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5nZXRGaWxlKCkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCBpcyAx
CisqIEVycm9yIGNhc2U6IGNyZWF0ZSBmbGFnIGlzIHNldCB0byB0cnVlCitQQVNTIGV4Lm5hbWUg
aXMgIlNlY3VyaXR5RXJyb3IiCisqIFJlZ3VsYXIgY2FzZTogZ2V0RmlsZSgnZmlsZTEudHh0JykK
K1BBU1MgZmlsZTFFbnRyeS5uYW1lIGlzICJmaWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuZnVs
bFBhdGggaXMgIi90ZXN0RmlsZXMvZmlsZTEudHh0IgorUEFTUyBmaWxlMUVudHJ5LmlzRmlsZSBp
cyB0cnVlCisqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCB0byBmb2xk
ZXIKK1BBU1MgZXgubmFtZSBpcyAiVHlwZU1pc21hdGNoRXJyb3IiCisqIEVycm9yIGNhc2U6IGNh
bGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCBjb250YWluaW5nIGJhY2tzbGFzaAorUEFTUyBleC5u
YW1lIGlzICJUeXBlTWlzbWF0Y2hFcnJvciIKKyogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxl
KCkgd2l0aCBwYXRoIHdoaWNoIGRvZXMgbm90IGV4aXN0CitQQVNTIGV4Lm5hbWUgaXMgIk5vdEZv
dW5kRXJyb3IiCisqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCBjb250
YWluaW5nIGEgTlVMIGNoYXJhY3RlcgorUEFTUyBleC5uYW1lIGlzICJUeXBlTWlzbWF0Y2hFcnJv
ciIKKyogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIHRvIHJvb3QKK1BB
U1MgZXgubmFtZSBpcyAiVHlwZU1pc21hdGNoRXJyb3IiCisqIFJlZ3VsYXIgY2FzZTogY2FsbGlu
ZyBnZXRGaWxlKCkgd2l0aCBhYnNvbHV0ZSBwYXRoCitQQVNTIGZpbGUzRW50cnkubmFtZSBpcyAi
ZmlsZTMudHh0IgorUEFTUyBmaWxlM0VudHJ5LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZv
bGRlcjEvZmlsZTMudHh0IgorUEFTUyBmaWxlM0VudHJ5LmlzRmlsZSBpcyB0cnVlCisqIEVkZ2Ug
Y2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCByZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgJy4n
IGFuZCAnLi4nCitQQVNTIGZpbGUzRW50cnkubmFtZSBpcyAiZmlsZTMudHh0IgorUEFTUyBmaWxl
M0VudHJ5LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL3N1YmZvbGRlcjEvZmlsZTMudHh0IgorUEFT
UyBmaWxlM0VudHJ5LmlzRmlsZSBpcyB0cnVlCisqIEVkZ2UgY2FzZTogY2FsbGluZyBnZXRGaWxl
KCkgd2l0aCByZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgdG9vIG1hbnkgJy4uJworUEFTUyBmaWxl
MUVudHJ5Lm5hbWUgaXMgImZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5mdWxsUGF0aCBpcyAi
L3Rlc3RGaWxlcy9maWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuaXNGaWxlIGlzIHRydWUKKyog
RWRnZSBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIGFic29sdXRlIHBhdGggY29udGFpbmlu
ZyAnLi4nCitQQVNTIGZpbGUxRW50cnkubmFtZSBpcyAiZmlsZTEudHh0IgorUEFTUyBmaWxlMUVu
dHJ5LmZ1bGxQYXRoIGlzICIvdGVzdEZpbGVzL2ZpbGUxLnR4dCIKK1BBU1MgZmlsZTFFbnRyeS5p
c0ZpbGUgaXMgdHJ1ZQorKiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1
dGUgcGF0aCBjb250YWluaW5nIHRvbyBtYW55ICcuLicKK1BBU1MgZmlsZTFFbnRyeS5uYW1lIGlz
ICJmaWxlMS50eHQiCitQQVNTIGZpbGUxRW50cnkuZnVsbFBhdGggaXMgIi90ZXN0RmlsZXMvZmls
ZTEudHh0IgorUEFTUyBmaWxlMUVudHJ5LmlzRmlsZSBpcyB0cnVlCisqIEVycm9yIGNhc2U6IGNh
bGxpbmcgZ2V0RmlsZSgpIHdpdGggZW1wdHkgcGF0aAorUEFTUyBleC5uYW1lIGlzICJUeXBlTWlz
bWF0Y2hFcnJvciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRy
YW5zZmVyLWl0ZW1zLWRyb3AtZ2V0RmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWdldEZpbGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NDYxZjA0NWNmNGExN2Q2MzBmMDcyNjc2ZWMzOGUxYTQwYzllN2M1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9w
LWdldEZpbGUuaHRtbApAQCAtMCwwICsxLDE5NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZHJvcHpvbmUiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7
IGJhY2tncm91bmQtY29sb3I6IGdyZXk7Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
QmFzaWMgdGVzdCBjb3ZlcmFnZSBmb3IgZmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmdldEZpbGUo
KSIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGdldEZpbGVBc1Byb21pc2Uo
ZGlyZWN0b3J5LCBwYXRoLCBmbGFncykKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBkaXJlY3RvcnkuZ2V0RmlsZShwYXRoLCBmbGFncywg
cmVzb2x2ZSwgcmVqZWN0KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAg
ZGVidWcoIiogRXJyb3IgY2FzZTogY3JlYXRlIGZsYWcgaXMgc2V0IHRvIHRydWUiKTsKKyAgICBy
ZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgImZpbGUxLnR4dCIsIHsgY3Jl
YXRlOiB0cnVlIH0pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQg
ZmFpbCB3aGVuIGNyZWF0ZSBmbGFnIGlzIHRydWUiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAg
ZXggPSBlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiU2VjdXJp
dHlFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICBkZWJ1Zygi
KiBSZWd1bGFyIGNhc2U6IGdldEZpbGUoJ2ZpbGUxLnR4dCcpIik7CisgICAgcmV0dXJuIGdldEZp
bGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICJmaWxlMS50eHQiLCB7fSkudGhlbihlbnRyeSA9
PiB7CisgICAgICAgIGZpbGUxRW50cnkgPSBlbnRyeTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJmaWxlMUVudHJ5Lm5hbWUiLCAiZmlsZTEudHh0Iik7CisgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZmlsZTFFbnRyeS5mdWxsUGF0aCIsICIvdGVzdEZpbGVzL2ZpbGUxLnR4
dCIpOworICAgICAgICBzaG91bGRCZVRydWUoImZpbGUxRW50cnkuaXNGaWxlIik7CisgICAgfSwg
ZSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoImdldEZpbGUoJ2ZpbGUxLnR4dCcpIHNob3VsZCBz
dWNjZWVkIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGRlYnVnKCIq
IEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggcGF0aCB0byBmb2xkZXIiKTsKKyAg
ICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgInN1YmZvbGRlcjEiLCB7
fSkudGhlbihlbnRyeSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBmYWlsIHdoZW4g
cGF0aCBwb2ludHMgdG8gYSBmb2xkZXIiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgZXggPSBl
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiVHlwZU1pc21hdGNo
RXJyb3IiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgZGVidWcoIiog
RXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIGNvbnRhaW5pbmcgYmFja3Ns
YXNoIik7CisgICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICJcXGZp
bGUxLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxk
IGZhaWwgd2hlbiBwYXRoIGlzIGludmFsaWQiKTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgZXgg
PSBlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUiLCAiVHlwZU1pc21h
dGNoRXJyb3IiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgZGVidWco
IiogRXJyb3IgY2FzZTogY2FsbGluZyBnZXRGaWxlKCkgd2l0aCBwYXRoIHdoaWNoIGRvZXMgbm90
IGV4aXN0Iik7CisgICAgcmV0dXJuIGdldEZpbGVBc1Byb21pc2UoZGlyZWN0b3J5RW50cnksICJk
b2Vzbm90ZXhpc3QudHh0Iiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVk
KCJTaG91bGQgZmFpbCB3aGVuIHBhdGggZG9lcyBub3QgZXhpc3QiKTsKKyAgICB9LCBlID0+IHsK
KyAgICAgICAgZXggPSBlOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV4Lm5hbWUi
LCAiTm90Rm91bmRFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAg
ICBkZWJ1ZygiKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBhdGggY29udGFp
bmluZyBhIE5VTCBjaGFyYWN0ZXIiKTsKKyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJl
Y3RvcnlFbnRyeSwgImZpbGUxLnR4dFwwIiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICB0
ZXN0RmFpbGVkKCJTaG91bGQgZmFpbCB3aGVuIHBhdGggaXMgaW52YWxpZCIpOworICAgIH0sIGUg
PT4geworICAgICAgICBleCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgu
bmFtZSIsICJUeXBlTWlzbWF0Y2hFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0
NygpIHsKKyAgICBkZWJ1ZygiKiBFcnJvciBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHBh
dGggdG8gcm9vdCIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5
LCAiLyIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGZh
aWwgd2hlbiBwYXRoIGlzIG5vdCBhIGRpcmVjdG9yeSIpOworICAgIH0sIGUgPT4geworICAgICAg
ICBleCA9IGU7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJUeXBl
TWlzbWF0Y2hFcnJvciIpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0OCgpIHsKKyAgICBk
ZWJ1ZygiKiBSZWd1bGFyIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1dGUgcGF0
aCIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiL3Rlc3RG
aWxlcy9zdWJmb2xkZXIxL2ZpbGUzLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAgICAg
ZmlsZTNFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUz
RW50cnkubmFtZSIsICJmaWxlMy50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJmaWxlM0VudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvc3ViZm9sZGVyMS9maWxlMy50eHQi
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJmaWxlM0VudHJ5LmlzRmlsZSIpOworICAgIH0sIGUg
PT4geworICAgICAgICB0ZXN0RmFpbGVkKCJnZXRGaWxlKCcvdGVzdEZpbGVzL3N1YmZvbGRlcjEv
ZmlsZTMudHh0Jykgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVz
dDkoKSB7CisgICAgZGVidWcoIiogRWRnZSBjYXNlOiBjYWxsaW5nIGdldEZpbGUoKSB3aXRoIHJl
bGF0aXZlIHBhdGggY29udGFpbmluZyAnLicgYW5kICcuLiciKTsKKyAgICByZXR1cm4gZ2V0Rmls
ZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgIi4uL3Rlc3RGaWxlcy8uLy4vc3ViZm9sZGVyMS8u
Li9zdWJmb2xkZXIxLy4vZmlsZTMudHh0Iiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICBm
aWxlM0VudHJ5ID0gZW50cnk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZTNF
bnRyeS5uYW1lIiwgImZpbGUzLnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImZpbGUzRW50cnkuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9zdWJmb2xkZXIxL2ZpbGUzLnR4dCIp
OworICAgICAgICBzaG91bGRCZVRydWUoImZpbGUzRW50cnkuaXNGaWxlIik7CisgICAgfSwgZSA9
PiB7CisgICAgICAgIHRlc3RGYWlsZWQoImdldEZpbGUoJy4uL3Rlc3RGaWxlcy8uLy4vc3ViZm9s
ZGVyMS8uLi9zdWJmb2xkZXIxLy4vZmlsZTMudHh0Jykgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICB9
KTsKK30KKworZnVuY3Rpb24gdGVzdDEwKCkgeworICAgIGRlYnVnKCIqIEVkZ2UgY2FzZTogY2Fs
bGluZyBnZXRGaWxlKCkgd2l0aCByZWxhdGl2ZSBwYXRoIGNvbnRhaW5pbmcgdG9vIG1hbnkgJy4u
JyIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiLi4vLi4v
Li4vLi4vLi4vdGVzdEZpbGVzL2ZpbGUxLnR4dCIsIHt9KS50aGVuKGVudHJ5ID0+IHsKKyAgICAg
ICAgZmlsZTFFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImZp
bGUxRW50cnkubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJmaWxlMUVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0RmlsZXMvZmlsZTEudHh0Iik7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTFFbnRyeS5pc0ZpbGUiKTsKKyAgICB9LCBlID0+IHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiZ2V0RmlsZSgnLi4vLi4vLi4vLi4vLi4vdGVzdEZpbGVzL2ZpbGUx
LnR4dCcpIHNob3VsZCBzdWNjZWVkIik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxMSgp
IHsKKyAgICBkZWJ1ZygiKiBFZGdlIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggYWJzb2x1
dGUgcGF0aCBjb250YWluaW5nICcuLiciKTsKKyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShk
aXJlY3RvcnlFbnRyeSwgIi90ZXN0RmlsZXMvLi4vdGVzdEZpbGVzL2ZpbGUxLnR4dCIsIHt9KS50
aGVuKGVudHJ5ID0+IHsKKyAgICAgICAgZmlsZTFFbnRyeSA9IGVudHJ5OworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImZpbGUxRW50cnkubmFtZSIsICJmaWxlMS50eHQiKTsKKyAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJmaWxlMUVudHJ5LmZ1bGxQYXRoIiwgIi90ZXN0Rmls
ZXMvZmlsZTEudHh0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZmlsZTFFbnRyeS5pc0ZpbGUi
KTsKKyAgICB9LCBlID0+IHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0RmlsZSgnLi4vLi4vLi4v
Li4vLi4vdGVzdEZpbGVzL2ZpbGUxLnR4dCcpIHNob3VsZCBzdWNjZWVkIik7CisgICAgfSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QxMigpIHsKKyAgICBkZWJ1ZygiKiBFZGdlIGNhc2U6IGNhbGxpbmcg
Z2V0RmlsZSgpIHdpdGggYWJzb2x1dGUgcGF0aCBjb250YWluaW5nIHRvbyBtYW55ICcuLiciKTsK
KyAgICByZXR1cm4gZ2V0RmlsZUFzUHJvbWlzZShkaXJlY3RvcnlFbnRyeSwgIi8uLi8uLi8uLi8u
Li8uLi90ZXN0RmlsZXMvZmlsZTEudHh0Iiwge30pLnRoZW4oZW50cnkgPT4geworICAgICAgICBm
aWxlMUVudHJ5ID0gZW50cnk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZmlsZTFF
bnRyeS5uYW1lIiwgImZpbGUxLnR4dCIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImZpbGUxRW50cnkuZnVsbFBhdGgiLCAiL3Rlc3RGaWxlcy9maWxlMS50eHQiKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJmaWxlMUVudHJ5LmlzRmlsZSIpOworICAgIH0sIGUgPT4geworICAgICAg
ICB0ZXN0RmFpbGVkKCJnZXRGaWxlKCcuLi8uLi8uLi8uLi8uLi90ZXN0RmlsZXMvZmlsZTEudHh0
Jykgc2hvdWxkIHN1Y2NlZWQiKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdDEzKCkgewor
ICAgIGRlYnVnKCIqIEVycm9yIGNhc2U6IGNhbGxpbmcgZ2V0RmlsZSgpIHdpdGggZW1wdHkgcGF0
aCIpOworICAgIHJldHVybiBnZXRGaWxlQXNQcm9taXNlKGRpcmVjdG9yeUVudHJ5LCAiIiwge30p
LnRoZW4oZW50cnkgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgZmFpbCB3aGVuIHBh
dGggaXMgaW52YWxpZCIpOworICAgIH0sIGUgPT4geworICAgICAgICBleCA9IGU7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXgubmFtZSIsICJUeXBlTWlzbWF0Y2hFcnJvciIpOwor
ICAgIH0pOworfQorCit2YXIgZHJvcHpvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJv
cHpvbmUnKTsKK2Ryb3B6b25lLm9uZHJvcCA9IGZ1bmN0aW9uKGUpIHsKKyAgICBlLnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CisKKyAgICBzaG91
bGRCZSgiZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCIsICIxIik7CisKKyAgICBkaXJlY3RvcnlF
bnRyeSA9IGRhdGFUcmFuc2Zlci5pdGVtc1swXS53ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgdGVz
dDEoKQorICAgIC50aGVuKHRlc3QyKQorICAgIC50aGVuKHRlc3QzKQorICAgIC50aGVuKHRlc3Q0
KQorICAgIC50aGVuKHRlc3Q1KQorICAgIC50aGVuKHRlc3Q2KQorICAgIC50aGVuKHRlc3Q3KQor
ICAgIC50aGVuKHRlc3Q4KQorICAgIC50aGVuKHRlc3Q5KQorICAgIC50aGVuKHRlc3QxMCkKKyAg
ICAudGhlbih0ZXN0MTEpCisgICAgLnRoZW4odGVzdDEyKQorICAgIC50aGVuKHRlc3QxMykKKyAg
ICAudGhlbihmaW5pc2hKU1Rlc3QpOworfTsKKworZHJvcHpvbmUub25kcmFnb3ZlciA9IGZ1bmN0
aW9uKGV2KSB7CisgICAgZXYucHJldmVudERlZmF1bHQoKTsKK30KKworb25sb2FkID0gZnVuY3Rp
b24oKSB7CisgICAgZHJhZ0ZpbGVzT250b0VsZW1lbnQoZHJvcHpvbmUsIFsnLi4vLi4vZmFzdC9m
b3Jtcy9maWxlL3Jlc291cmNlcy90ZXN0RmlsZXMnXSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NjU0NGY2NTdmN2E4MGE4ZGVmZWZlMGM2MTIwMjgyNWI5Nzg2MmIwYS4uMWE2ZGIxZmY5YjQ4ZTZk
YjhkYjg0ODJmODFjNWNmMThiYjNlYzg1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTU2Nyw2ICs1NjcsNyBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YXRyYW5zZmVyLWl0ZW1zLWRyb3AtZGlyZWN0b3J5UmVhZGVyLmh0bWwKIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1kaXJlY3RvcnlSZWFkZXItZXJyb3IuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLWRpcmVjdG9yeVJlYWRl
ci1yb290Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1n
ZXRBc0VudHJ5Lmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJv
cC1nZXRGaWxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJv
cC1nZXRQYXJlbnQtcm9vdC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtZ2V0UGFyZW50Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtZHJvcC1nZXRQYXJlbnQyLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>