<?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>102854</bug_id>
          
          <creation_ts>2012-11-20 18:24:18 -0800</creation_ts>
          <short_desc>[V8] Unify the Node and non-Node code paths for getting JavaScript wrappers</short_desc>
          <delta_ts>2013-09-01 10:34:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>andersca</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>772360</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-20 18:24:18 -0800</bug_when>
    <thetext>[V8] Unify the Node and non-Node code paths for getting JavaScript wrappers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772368</commentid>
    <comment_count>1</comment_count>
      <attachid>175319</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-20 18:30:30 -0800</bug_when>
    <thetext>Created attachment 175319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772375</commentid>
    <comment_count>2</comment_count>
      <attachid>175319</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-20 18:46:50 -0800</bug_when>
    <thetext>Comment on attachment 175319
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=175319&amp;action=review

&gt; Source/WebCore/ChangeLog:10
&gt; +        should not be as fast to access as Nodes were previously.

should now?

&gt; Source/WebCore/ChangeLog:26
&gt; +              DOM object has a wrapper both on the main thread and on a worker
&gt; +              thread, we&apos;ll have a write conflict as both threads will want to
&gt; +              store the wrapper inline in the object.

We have an ASSERT to catch that, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772416</commentid>
    <comment_count>3</comment_count>
      <attachid>175319</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 20:18:45 -0800</bug_when>
    <thetext>Comment on attachment 175319
Patch

Attachment 175319 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14913826

New failing tests:
fast/workers/worker-close-more.html
fast/workers/dedicated-worker-lifecycle.html
fast/workers/worker-lifecycle.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773384</commentid>
    <comment_count>4</comment_count>
      <attachid>175543</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-21 16:13:04 -0800</bug_when>
    <thetext>Created attachment 175543
Leaks objects in workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773392</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-21 16:20:08 -0800</bug_when>
    <thetext>The part I got hung up on here was trying to make ScriptWrappable work in workers.  On worker shutdown, we need to clear out the JavaScript wrappers and deref the underlying objects.  If we use ScriptWrappable, we no longer have the hashmap to enumerate.  I tried enumerating the handles from the V8 global handle table, but that fails if the worker is terminated via terminate() because the handle table is already destroyed by the time we get around to clearing out the wrappers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923512</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-01 10:34:32 -0700</bug_when>
    <thetext>V8 is gone.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175319</attachid>
            <date>2012-11-20 18:30:30 -0800</date>
            <delta_ts>2012-11-21 16:13:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102854-20121120182819.patch</filename>
            <type>text/plain</type>
            <size>61200</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4MTVlNmUwNjVmMTA0
YTc1MWFjMDU3ZTMyNjk4N2QwMDBjZmNiNC4uMmIzMjIxYmE1ZjQwMmQwYzMyY2M5MjRjMzNhZTA1
OWE2Zjg1NmUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBVbmlmeSB0aGUgTm9k
ZSBhbmQgbm9uLU5vZGUgY29kZSBwYXRocyBmb3IgZ2V0dGluZyBKYXZhU2NyaXB0IHdyYXBwZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGNvbXBsZXRlcyB0aGUgcHJvamVjdCBvZiBtZXJnaW5nIHRoZSBOb2RlIGFuZCBub24tTm9k
ZSBjb2RlCisgICAgICAgIHBhdGhzIGZvciBnZXR0aW5nIEphdmFTY3JpcHQgd3JhcHBlcnMuIEFs
bCBTY3JpcHRXcmFwcGFibGUgb2JqZWN0cworICAgICAgICBzaG91bGQgbm90IGJlIGFzIGZhc3Qg
dG8gYWNjZXNzIGFzIE5vZGVzIHdlcmUgcHJldmlvdXNseS4KKworICAgICAgICBUaGUgbWFpbiBj
aGFuZ2UgaW4gdGhpcyBwYXRjaCBpcyB0aGF0IHdlIG5vdyB1c2UgdGhlIGlubGluZSB3cmFwcGVy
CisgICAgICAgIGNhY2hlIGluIHdvcmtlcnMgYXMgd2VsbCBhcyBpbiB0aGUgbWFpbiB3b3JsZCBv
biB0aGUgbWFpbiB0aHJlYWQuIFRoYXQKKyAgICAgICAgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0byBm
aWd1cmUgb3V0IHdoZXRoZXIgd2UncmUgaW4gYSB3b3JrZXIgaW4gb3JkZXIgdG8KKyAgICAgICAg
a25vdyB3aGVuIHRoZSB1c2UgdGhlIGlubGluZSBjYWNoZS4gVGhhdCBtZWFucyBhbGwgU2NyaXB0
V3JhcHBhYmxlCisgICAgICAgIG9iamVjdHMgY2FuIHVzZSB0aGUgZmFzdC1wYXRoIGNoZWNrIGZv
ciB3aGV0aGVyIGlzb2xhdGVkIHdvcmxkcyBleGlzdAorICAgICAgICBhbmQgY2FuIHVzdWFsbHkg
c2tpcCB0byBjYWxsIGdvIHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlSYW5nZS5oOgorICAgICAgICAgICAgLSBUaGVzZSB0d28gb2JqZWN0cyBhcmUgVGhyZWFk
U2FmZVJlZkNvdW50ZWQsIHdoaWNoIGhpbnRzIHRoYXQgdGhleQorICAgICAgICAgICAgICBtaWdo
dCBiZSByZS11c2VkIGFjcm9zcyB0aHJlYWRzLiBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlLCBJJ3Zl
CisgICAgICAgICAgICAgIG1hZGUgdGhlbSBub3QgU2NyaXB0V3JhcHBhYmxlIGFueW1vcmUuIElm
IGEgc2luZ2xlIGluc3RhbmNlIG9mIGEKKyAgICAgICAgICAgICAgRE9NIG9iamVjdCBoYXMgYSB3
cmFwcGVyIGJvdGggb24gdGhlIG1haW4gdGhyZWFkIGFuZCBvbiBhIHdvcmtlcgorICAgICAgICAg
ICAgICB0aHJlYWQsIHdlJ2xsIGhhdmUgYSB3cml0ZSBjb25mbGljdCBhcyBib3RoIHRocmVhZHMg
d2lsbCB3YW50IHRvCisgICAgICAgICAgICAgIHN0b3JlIHRoZSB3cmFwcGVyIGlubGluZSBpbiB0
aGUgb2JqZWN0LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRy
R2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3Jl
OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpkZXByZWNhdGVkR2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVySW5PYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpuZXV0ZXJCaW5kaW5nKToKKwogMjAxMi0xMS0yMCAgSm9zaHVhIEJlbGwg
IDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogTW92ZSBjb250cm9s
IG9mIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24gdG8gZnJvbnQgZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCmluZGV4IDg2NGRhMWI1YTYxMWM4ZjA5MTM5ZDZmZDVk
YjMwMDYzNTUyYjQyYmUuLmJiMzc4ZjhkNTJiZTUwZjc0MjhmNWUxNDZmMWE5NWFkZjM3NWZkZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM2LDcgKzM1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJREJLZXkgOiBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCS2V5PiB7CitjbGFzcyBJREJLZXkg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCS2V5PiB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBLZXlBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKaW5kZXggZDM0N2Y4NDEwNmQ2ODQ1
OWJkY2M1OTc5MGQ4YzdkNDY1YjEzMDFmOS4uOGM3OTA5ZDA4MTUwYzJkYjNmYmU3ODVhMmZjYzdj
MGEzYTgwNWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlSYW5nZS5oCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiSURCS2V5LmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTM4
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwogCi1jbGFzcyBJREJLZXlSYW5nZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJLZXlSYW5nZT4geworY2xhc3MgSURCS2V5UmFuZ2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCS2V5UmFuZ2U+IHsKIHB1YmxpYzoKICAg
ICBlbnVtIExvd2VyQm91bmRUeXBlIHsKICAgICAgICAgTG93ZXJCb3VuZE9wZW4sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDRmMjI5Njk3NTIxZTNiZTM5ODk2NjEzOTkwMzUxYTg0NzlhMDIxMmUuLmJhOGI0OWJhMDU5MmE1
NjA3MmY5YWE2ZGExNDEzNDQ3ZTJhM2M0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC01MzMsMTAgKzUzMyw3IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mCiB9CiBFTkQKICAgICB9IGVsc2UgewotCi0gICAgICAgIG15
ICRnZXRDYWNoZWRXcmFwcGVyID0gJGNvZGVHZW5lcmF0b3ItPklzU3ViVHlwZSgkaW50ZXJmYWNl
LCAiTm9kZSIpID8gIkRPTURhdGFTdG9yZTo6Z2V0Tm9kZShpbXBsLCBpc29sYXRlKSIgOiAiRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCkiOwogICAgICAgICBteSAkY3Jl
YXRlV3JhcHBlckNhbGwgPSAkY3VzdG9tV3JhcCA/ICIke3Y4SW50ZXJmYWNlTmFtZX06OndyYXAi
IDogIiR7djhJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlciI7Ci0KICAgICAgICAgaWYgKCRj
dXN0b21XcmFwKSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAK
QEAgLTU0OCw3ICs1NDUsNyBAQCBFTkQKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXAoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBBU1NFUlQoaW1wbCk7Ci0g
ICAgQVNTRVJUKCRnZXRDYWNoZWRXcmFwcGVyLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURh
dGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuICRjcmVh
dGVXcmFwcGVyQ2FsbChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogRU5ECkBA
IC01NjAsNyArNTU3LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVj
dCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmoKIHsKICAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9ICRnZXRDYWNoZWRXcmFwcGVyOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0KGlt
cGwsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CkBAIC01NzAsNyArNTY3LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKIHsKICAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gJGdldENhY2hlZFdyYXBw
ZXI7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6Omdl
dChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwpAQCAtNTg3LDcgKzU4NCw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mCiAgICAg
Ly8gaW4gYW4gaXNvbGF0ZWQgd29ybGQuIFRoZSBmYXN0ZXN0IHdheSB3ZSBrbm93IGhvdyB0byBk
byB0aGF0IGlzIHRvIGNoZWNrCiAgICAgLy8gd2hldGhlciB0aGUgaG9sZGVyJ3MgaW5saW5lIHdy
YXBwZXIgaXMgdGhlIHNhbWUgd3JhcHBlciB3ZSBzZWUgaW4gdGhlCiAgICAgLy8gdjg6OkFjY2Vz
c29ySW5mby4KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAoaG9sZGVyLT53
cmFwcGVyKCkgPT0gaW5mby5Ib2xkZXIoKSkgPyBpbXBsLT53cmFwcGVyKCkgOiBET01EYXRhU3Rv
cmU6OmdldE5vZGUoaW1wbCwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IChob2xkZXItPndyYXBwZXIoKSA9PSBpbmZvLkhvbGRlcigpKSA/
IGltcGwtPndyYXBwZXIoKSA6IERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CkBAIC0xMDQwLDcgKzEwMzcsNyBAQCBFTkQKICAgICAgICAgIyBDaGVjayBmb3IgYSB3cmFw
cGVyIGluIHRoZSB3cmFwcGVyIGNhY2hlLiBJZiB0aGVyZSBpcyBvbmUsIHdlIGtub3cgdGhhdCBh
IGhpZGRlbiByZWZlcmVuY2UgaGFzIGFscmVhZHkKICAgICAgICAgIyBiZWVuIGNyZWF0ZWQuIElm
IHdlIGRvbid0IGZpbmQgYSB3cmFwcGVyLCB3ZSBjcmVhdGUgYm90aCBhIHdyYXBwZXIgYW5kIGEg
aGlkZGVuIHJlZmVyZW5jZS4KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBS
ZWZQdHI8JHJldHVyblR5cGU+IHJlc3VsdCA9ICR7Z2V0dGVyU3RyaW5nfTtcbiIpOwotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFw
cGVyID0gcmVzdWx0LmdldCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KERPTURhdGFTdG9yZTo6
Y3VycmVudChpbmZvLkdldElzb2xhdGUoKSktPmdldChyZXN1bHQuZ2V0KCkpKSA6IHY4VW5kZWZp
bmVkKCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IHY4OjpIYW5kbGU8djg6OlZh
bHVlPihET01EYXRhU3RvcmU6OmdldChyZXN1bHQuZ2V0KCksIGluZm8uR2V0SXNvbGF0ZSgpKSkg
OiB2OFVuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICAgICAgd3JhcHBlciA9IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkhvbGRl
cigpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsgIyBGSVhNRTogQ291bGQgdXNlIHdyYXAgaGVy
ZSBzaW5jZSB0aGUgd3JhcHBlciBpcyBlbXB0eS4KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSlcbiIpOwpAQCAtMzQzNiwxNCAr
MzQzMywxMyBAQCBzdWIgR2VuZXJhdGVUb1Y4Q29udmVydGVycwogCiAgICAgbXkgJGNyZWF0ZVdy
YXBwZXJBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgkbmF0aXZlVHlwZSk7CiAgICAg
bXkgJGJhc2VUeXBlID0gQmFzZUludGVyZmFjZU5hbWUoJGludGVyZmFjZSk7Ci0gICAgbXkgJGdl
dENhY2hlZFdyYXBwZXIgPSAkY29kZUdlbmVyYXRvci0+SXNTdWJUeXBlKCRpbnRlcmZhY2UsICJO
b2RlIikgPyAiRE9NRGF0YVN0b3JlOjpnZXROb2RlKGltcGwuZ2V0KCksIGlzb2xhdGUpIiA6ICJE
T01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKSI7CiAKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7djhJ
bnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3JhcHBlcigke2NyZWF0ZVdyYXBwZXJBcmd1bWVudFR5cGV9
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7Ci0gICAgQVNTRVJUKCRnZXRD
YWNoZWRXcmFwcGVyLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0KGlt
cGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiBFTkQKICAgICBpZiAoJGJhc2VUeXBlIG5lICRpbnRl
cmZhY2VOYW1lKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CkBAIC0zNDU4
LDcgKzM0NTQsNyBAQCBFTkQKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbC0+ZnJhbWUoKSkg
ewogICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLT5pbml0aWFsaXplTWFpbldvcmxkKCkpIHsK
ICAgICAgICAgICAgIC8vIGluaXRpYWxpemVNYWluV29ybGQgbWF5IGhhdmUgY3JlYXRlZCBhIHdy
YXBwZXIgZm9yIHRoZSBvYmplY3QsIHJldHJ5IGZyb20gdGhlIHN0YXJ0LgotICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXROb2RlKGlt
cGwuZ2V0KCksIGlzb2xhdGUpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CiAgICAgICAg
ICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB3cmFw
cGVyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCAxYmExMzk2YTNmMGQwMDdj
N2YwMTMxMjdhZDRmZjEwNjYzYmI1NmU5Li45ZjI5YWM0ZmU5NTFjOTI3ODFmMmFjZjRhMzVmYmEw
Y2Q1YWE0NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBib29s
IFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUp
CiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RmxvYXQ2NEFycmF5OjpjcmVhdGVXcmFwcGVyKFBh
c3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwuZ2V0
KCkpOwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBs
LmdldCgpKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBp
c29sYXRlKS5Jc0VtcHR5KCkpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8QXJyYXlCdWZmZXJWaWV3Kj4oaW1wbC5nZXQoKSkpID09IHN0YXRpY19jYXN0PHZvaWQq
PihpbXBsLmdldCgpKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBW
OERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywg
aW1wbC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCmluZGV4IDUzZTZkYWUxZWE3MzkzMjgwNjk1OWIy
ZTYxNDYxN2JkMjNmNjUzMjguLmRiMWRjMDk4MzQ1Y2M5MmJhN2QwZjc1M2Q2YTBkNjkwM2UxZGY1
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOEZsb2F0NjRBcnJheS5oCkBAIC02MCw3ICs2MCw3IEBAIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoRmxvYXQ2NEFycmF5KiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRl
KTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpAQCAtNzAs
NyArNzAsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFycmF5
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZQogewogICAgIGlmIChVTkxJS0VMWSgh
aW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0
ZSktPmdldChpbXBsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4
IDQxYjU3NmRlOTRlNWEwNjVmYjZiOWM5YjA2NGJhMmZjYjFmZDg1MzguLjZhNDE5YjEwOTFkODYz
ODE2MjY0NTBlNDMyZTQ4NDkzMzJlN2JkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVz
dEFjdGl2ZURPTU9iamVjdD4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsLmdldCgpKTsK
LSAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQo
KSkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0
ZSkuSXNFbXB0eSgpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4
RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBp
bXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IDhmNWRiZDRiZTEyNDZmYWM5MGQ5Mzg4MmVlNzAz
MzlkN2U4YjE2MzguLmEzZjk2ODk2OTc3NDZmZDk0ZjQ1N2RkMDJmYzNlMDJiZTBjMWQ3MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToK
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEFjdGl2ZURPTU9iamVjdCog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKIHsKICAgICBBU1NFUlQoaW1wbCk7Ci0gICAgQVNTRVJUKERPTURhdGFT
dG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpLklzRW1wdHkoKSk7CisgICAgQVNTRVJU
KERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAgICAgcmV0dXJu
IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogfQogCkBAIC02NSw3ICs2NSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRs
ZTx2CiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsK
ICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAg
ICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpAQCAtNzUsNyAr
NzUsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEFjdGl2ZURPTU9i
amVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZQogewogICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSkt
PmdldChpbXBsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFT
dG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRl
eCBmZTI5MmUyZWI4ZDgwZGUyZTBlMjA5NTcyZTM4NjY1NzU4YmQxNWY4Li5lZmIzZmFiMjM5ZjMx
YjRiNzBlNjAxMDNhNjU2MjNmYWJmNmFlYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdGVXcmFwcGVyKFBhc3NS
ZWZQdHI8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGlt
cGwuZ2V0KCkpOwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdl
dChpbXBsLmdldCgpKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChp
bXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4
dCwgJmluZm8sIGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHko
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IGMyMjQxYWU1YzgwMjQw
MWM0OTE2ZTJjNDQ3MGUxNGIzZTljOTFiYjcuLmI5OWZmMjlmZjE5ZTNiZjY0ZmFmM2YyMGQwYWIx
MTA4ZWU3M2NkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCkBAIC01Niw3
ICs1Niw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRl
c3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBBU1NFUlQoaW1wbCk7
Ci0gICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpLklz
RW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklz
RW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpjcmVhdGVXcmFw
cGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKQEAgLTY0LDcgKzY0LDcg
QEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVjdChUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIqIGltcGwsIHY4OjpIYW5kbGUKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQog
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0
KGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9y
ZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CkBAIC03NCw3ICs3NCw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iCiB7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVj
ayhpc29sYXRlKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFT
dG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0ZSk7CiAgICAgaWYg
KCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJu
IHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAppbmRleCAyNmE3ZmM3NTM0YWIyYWUxMmFkZTJiZGU5ZWMyNjdkZDAz
NmViMGU5Li4xNzMxNGY0MGM3YmEyNTE4ODI5YzlmMDNmYzlmYjJhYjMwYzQ2YjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBW
OFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUpCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQog
ewogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKLSAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJy
ZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoRE9N
RGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsKIAogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVj
dChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAgICBpZiAoVU5MSUtFTFko
d3JhcHBlci5Jc0VtcHR5KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXgg
MGRmOWFkMThhYWZiNjFiMTQzOTcwMjAwZDM4NmI1MzczYThlNzcxNi4uMWY5YWI0MDRlYjlhNWRh
NmRhZDk0MDAyYzZiZmY5ZTY0MjhiNTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIEFT
U0VSVChpbXBsKTsKLSAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5n
ZXQoaW1wbCkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwg
aXNvbGF0ZSkuSXNFbXB0eSgpKTsKICAgICByZXR1cm4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkBAIC02
NSw3ICs2NSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVz
dEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8CiB7CiAgICAgaWYgKFVOTElLRUxZ
KCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNv
bGF0ZSktPmdldChpbXBsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwpAQCAtNzUsNyArNzUsNyBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iagogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51
bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUp
OwogICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
ICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmNwcAppbmRleCA0MjcwNWI0Y2JhNDMzY2ZlZmM1MjNkNWE4ODQzMjk3Yzc4
YjVhZjcxLi5jNjAxMmE4ZmY4ZmZjNWI4OTdkZjc2ZjA3MzJiYTZlMDdkOGQ5ZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIFY4VGVzdEV2ZW50
VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQ
dHI8VGVzdEV2ZW50VGFyZ2V0PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwuZ2V0KCkp
OwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdl
dCgpKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29s
YXRlKS5Jc0VtcHR5KCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
VjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8s
IGltcGwuZ2V0KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5oCmluZGV4IDEwNzJiYjc2NzlkMmQ1NTJmMzI0N2ZjMGJmOGJlMmNkNzU5
NjI4ODIuLjdkNTViOGMwZDBhZWUzOWQzMjI0MDRiMzM2MjFjMzI2MmIzYWE3YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRh
cmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsK
ICAgICBBU1NFUlQoaW1wbCk7Ci0gICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29s
YXRlKS0+Z2V0KGltcGwpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0
KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50VGFyZ2V0
OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKQEAg
LTY2LDcgKzY2LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVjdChU
ZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok8KIHsKICAgICBpZiAoVU5MSUtF
TFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+Z2V0KGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4KIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRl
KTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmNwcAppbmRleCBiYmI5ZmVjZWM4OTAwZTZlZjJlZDM1MWJkMGE4MDQwYzY5M2U4
MjEyLi4yMTM5ZGMxNDllZmM5YzJjYzI3NzhlMjU0OTAzOTVjODQ5Njg5NGYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGJvb2wgVjhUZXN0RXhjZXB0aW9uOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4VGVzdEV4Y2VwdGlvbjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFeGNl
cHRpb24+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7Ci0gICAgQVNTRVJU
KERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHko
KSk7CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHko
KSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7
CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApp
bmRleCAwZjc3NzFkOGEwZWZiN2M4ODVjMzViMGM0MmI3OWIxZmQ0Njc1NTIwLi42ZjE5ZDRkN2Y4
MjM4YjZhYmIwZmUyNTRhOTVlYjcyZGVmNDNhZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC01
NSw3ICs1NSw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
KFRlc3RFeGNlcHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgQVNTRVJUKGltcGwpOwotICAg
IEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKS5Jc0VtcHR5
KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0VtcHR5
KCkpOwogICAgIHJldHVybiBWOFRlc3RFeGNlcHRpb246OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RFeGNlcHRpb24qIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iagogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwg
aXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
QEAgLTczLDcgKzczLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RF
eGNlcHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKIHsKICAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwot
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50
KGlzb2xhdGUpLT5nZXQoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSBET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA1YjZi
N2MwNDc5YmJhMmUwZjExNTA1ZjQ5ZDRmMThhZDZjNDkyY2UyLi4zMTVhY2M1MzZlOTc2YzU0MDFk
ZGI4ZTgxMWI3Njk2NzQzNmZkZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzQxLDcg
KzM0MSw3IEBAIEFjdGl2ZURPTU9iamVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9i
amVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4VGVzdEludGVyZmFjZTo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7Ci0gICAgQVNTRVJUKERPTURh
dGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3Rh
bnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAg
aWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCA4
ODE5YTNlNWIyMDQ4Y2IwZGVhODdmZDU0YmM0MjFlOGJhNTg1Yzg0Li5mZDQwODM0NzgyODE0YjRj
YmE2NGZhMTdlMmI3ZDY5NDZmMTdmMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC02MCw3ICs2
MCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RJ
bnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgQVNTRVJUKGltcGwpOwotICAgIEFTU0VS
VChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKS5Jc0VtcHR5KCkpOwor
ICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwog
ICAgIHJldHVybiBWOFRlc3RJbnRlcmZhY2U6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIApAQCAtNjgsNyArNjgsNyBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iagogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0
ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTc4
LDcgKzc4LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RJbnRlcmZh
Y2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKIHsKICAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xh
dGUpLT5nZXQoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCmluZGV4IDllMGUyZmMzODczNTE0ODEyYmYzOTIwNGM0ZmEzMDVjNmY0ZDlhOTcu
LmQ3YTM4Y2JmYWI1MGZkODY0Njc5MDJhYjIwMjBhN2FlNzUxMmNjNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBi
b29sIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSkKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwotICAgIEFT
U0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0Vt
cHR5KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0Vt
cHR5KCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0
KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCAwYzc2OWVhZjMxYjk5YjViYTRkZjZk
ZGIxOWI3NmVkYjY1YjViZGQ5Li42OTk3ZGU2ZDE1MDYyNTlhMjU4OTM1ZDk4OWM1NzJhZTE1YWFi
MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgQVNTRVJU
KGltcGwpOwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChp
bXBsKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29s
YXRlKS5Jc0VtcHR5KCkpOwogICAgIHJldHVybiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKQEAg
LTYzLDcgKzYzLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdG9WOE9iamVjdChU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6OkgKIHsKICAgICBpZiAoVU5MSUtF
TFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+Z2V0KGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwogICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6
OkhhbmRsZTx2CiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4
TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBl
ciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0
ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBhYjBiYjZiNjIyMTgxYTk2M2ZhNGQ3
MTQ4MTRmODIzNjAyZjIwMzgxLi4yNWQzMGIwZDQ5NTQ1NjIwZjRiZjNkNTBiZDZiOGYyZDYxYWQy
ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xNTAsNyArMTUw
LDcgQEAgQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURP
TU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3QKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3ROYW1lZENv
bnN0cnVjdG9yPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwuZ2V0KCkpOwotICAgIEFT
U0VSVChET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsLmdldCgpKS5Jc0Vt
cHR5KCkpOworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0Vt
cHR5KCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGNyZWF0aW9uQ29udGV4dCwgJmluZm8sIGltcGwuZ2V0
KCkpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuaAppbmRleCA0YmY0MGNlYmQxODM3N2EzYzMxZDhjOGU0ZGYxNzg0ZjFh
MTNlZDgwLi42NWZmNzljNWJlMWViY2IzYTVkNDk3OTNlMWYwZDBjMTMwZTQ0OWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE5hbWVkQ29uc3RydWN0b3IqIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSA9IDApCiB7CiAgICAgQVNTRVJUKGltcGwpOwotICAgIEFTU0VSVChET01EYXRhU3Rv
cmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKS5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChE
T01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogICAgIHJldHVybiBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gdG9WOE9iamVjdChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRs
ZTwKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERP
TURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwog
ICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAg
IHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CkBAIC04MCw3ICs4
MCw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TmFtZWRDb25zdHJ1
Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+
Z2V0KGltcGwpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpnZXQoaW1wbCwgaXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCBmOWM1N2FhM2UzYmQyN2MxNDVmZGIzMTkx
NzIwNzQ5OTE2NzBhZDJjLi4yNmViMDZkYzgzOGNlMTUyZDY2MzQ0NDYwY2E4NjQ0YTM3MmY1ZTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBWOFRlc3ROb2RlOjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0Tm9kZT4gaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKLSAgICBBU1NFUlQoRE9NRGF0YVN0b3Jl
OjpnZXROb2RlKGltcGwuZ2V0KCksIGlzb2xhdGUpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERP
TURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxOb2RlKj4oaW1wbC5nZXQoKSkpID09IHN0YXRp
Y19jYXN0PHZvaWQqPihpbXBsLmdldCgpKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250
ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCA5YWNiMWU0NTFhZmRiMjMwYTQz
MGE5ZWUwZTRkZjY5YjJlNjRmNDczLi45NTU1MjUyMDY4NTE5MGEwYTg0MzdhNjAxMWY4NTlhMmFm
MmNkY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAg
QVNTRVJUKGltcGwpOwotICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldE5vZGUoaW1wbCwgaXNv
bGF0ZSkuSXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNv
bGF0ZSkuSXNFbXB0eSgpKTsKICAgICByZXR1cm4gVjhUZXN0Tm9kZTo6Y3JlYXRlV3JhcHBlcihp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkBAIC02NCw3ICs2NCw3IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdE5vZGUqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4KIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0Tm9kZShpbXBsLCBpc29sYXRlKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldChpbXBs
LCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwpAQCAtNzQsNyArNzQsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogewogICAgIGlmIChV
TkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldE5v
ZGUoaW1wbCwgaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwpAQCAtODgsNyArODgsNyBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3ROb2RlKiBpbXBsLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbgogICAgIC8vIGluIGFuIGlzb2xhdGVkIHdvcmxkLiBUaGUgZmFzdGVzdCB3YXkgd2Ug
a25vdyBob3cgdG8gZG8gdGhhdCBpcyB0byBjaGVjawogICAgIC8vIHdoZXRoZXIgdGhlIGhvbGRl
cidzIGlubGluZSB3cmFwcGVyIGlzIHRoZSBzYW1lIHdyYXBwZXIgd2Ugc2VlIGluIHRoZQogICAg
IC8vIHY4OjpBY2Nlc3NvckluZm8uCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gKGhvbGRlci0+d3JhcHBlcigpID09IGluZm8uSG9sZGVyKCkpID8gaW1wbC0+d3JhcHBlcigp
IDogRE9NRGF0YVN0b3JlOjpnZXROb2RlKGltcGwsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAoaG9sZGVyLT53cmFwcGVyKCkgPT0gaW5m
by5Ib2xkZXIoKSkgPyBpbXBsLT53cmFwcGVyKCkgOiBET01EYXRhU3RvcmU6OmdldChpbXBsLCBp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgaW5mby5Ib2xkZXIoKSwgaW5m
by5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA3NDY0MjFmMDgxNGZmMmRkZDljMDkzMjA0
MDhjNDcxNmJhMGY0NjA1Li5kYzhiN2ZiYTE4YWRhMzBmNjczY2RmMjFhODA0Y2NkNWYzYjA0MTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWFkT25seVRlc3RPYmpBdHRyLl9nZXQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwog
ICAgIFJlZlB0cjxUZXN0T2JqPiByZXN1bHQgPSBpbXAtPnJlYWRPbmx5VGVzdE9iakF0dHIoKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IHY4OjpI
YW5kbGU8djg6OlZhbHVlPihET01EYXRhU3RvcmU6OmN1cnJlbnQoaW5mby5HZXRJc29sYXRlKCkp
LT5nZXQocmVzdWx0LmdldCgpKSkgOiB2OFVuZGVmaW5lZCgpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KERP
TURhdGFTdG9yZTo6Z2V0KHJlc3VsdC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpKSA6IHY4VW5k
ZWZpbmVkKCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIHdyYXBwZXIg
PSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwog
ICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtNTE3LDEwICs1MTcsMTEgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3QKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZS5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3Jp
cHRTdGF0ZTo6Y3VycmVudCgpOwotICAgIGlmICghc3RhdGUpCisgICAgU2NyaXB0U3RhdGUqIGN1
cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3Rh
dGUpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIHJldHVybiB2OEludGVnZXIo
aW1wLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoc3RhdGUpLCBpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgU2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICByZXR1cm4gdjhJ
bnRlZ2VyKGltcC0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCZzdGF0ZSksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC01MjgsMTAgKzUyOSwxMSBAQCBz
dGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlLl9zZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7Ci0g
ICAgU2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICBpZiAo
IXN0YXRlKQorICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3Vy
cmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQogICAgICAgICByZXR1cm47Ci0gICAgaW1w
LT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoc3RhdGUsIHYpOworICAgIFNjcmlwdFN0YXRl
JiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoJnN0YXRlLCB2KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm47CkBAIC01NjAsMTAgKzU2MiwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6OkxvY2FsPAogICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLl9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9
IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7Ci0gICAgaWYgKCFzdGF0ZSkKKyAgICBTY3JpcHRTdGF0
ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJl
bnRTdGF0ZSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgUmVmUHRyPFRlc3RP
Ymo+IHYgPSBpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgZWMpOwor
ICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgUmVmUHRyPFRlc3RP
Ymo+IHYgPSBpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygmc3RhdGUsIGVjKTsK
ICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVj
LCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAt
NTc2LDEwICs1NzksMTEgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcy5fc2V0Iik7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBU
ZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RPYmo6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7Ci0gICAgU2Ny
aXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICBpZiAoIXN0YXRl
KQorICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgp
OworICAgIGlmICghY3VycmVudFN0YXRlKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wLT5zZXRX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoc3RhdGUsIFdURjo6Z2V0UHRyKHYpKTsKKyAg
ICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIGltcC0+c2V0V2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCZzdGF0ZSwgV1RGOjpnZXRQdHIodikpOwogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRp
b24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybjsKQEAgLTYxMSwxMSArNjE1LDEy
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlLl9nZXQi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwotICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7Ci0gICAg
aWYgKCFzdGF0ZSkKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6
OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKICAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CisgICAgU2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIHJldHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShzdGF0ZSwgc2NyaXB0Q29udGV4dCksIGluZm8uSG9s
ZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChpbXAtPndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoJnN0YXRlLCBzY3JpcHRD
b250ZXh0KSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC02MjMsMTEgKzYyOCwxMiBA
QCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0clNldHRlcih2ODo6TG9jYQogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZS5fc2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RPYmo6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7Ci0gICAg
U2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICBpZiAoIXN0
YXRlKQorICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQogICAgICAgICByZXR1cm47CisgICAgU2NyaXB0
U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGltcC0+
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShzdGF0
ZSwgc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGltcC0+c2V0V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUsIHNjcmlwdENv
bnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
ICAgICByZXR1cm47CkBAIC02MzgsMTEgKzY0NCwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YQogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcy5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwot
ICAgIGlmICghc3RhdGUpCisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0
YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCiAgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBSZWZQdHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgc2NyaXB0
Q29udGV4dCwgZWMpOworICAgIFJlZlB0cjxUZXN0T2JqPiB2ID0gaW1wLT53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCZzdGF0ZSwgc2NyaXB0
Q29udGV4dCwgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIHJldHVybiBzZXRE
T01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCkBAIC02NTUsMTEgKzY2MiwxMiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2OAog
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcy5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBUZXN0T2JqKiB2ID0gVjhUZXN0
T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7Ci0gICAgU2NyaXB0U3RhdGUqIHN0YXRlID0g
U2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICBpZiAoIXN0YXRlKQorICAgIFNjcmlwdFN0YXRl
KiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVu
dFN0YXRlKQogICAgICAgICByZXR1cm47CisgICAgU2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1cnJl
bnRTdGF0ZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgc2NyaXB0Q29udGV4
dCwgV1RGOjpnZXRQdHIodikpOworICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygmc3RhdGUsIHNjcmlwdENvbnRleHQsIFdU
Rjo6Z2V0UHRyKHYpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHRo
cm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1
cm47CkBAIC02NjksMTEgKzY3NywxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQQogewogICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgU2NyaXB0U3RhdGUqIHN0YXRl
ID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKLSAgICBpZiAoIXN0YXRlKQorICAgIFNjcmlwdFN0
YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3Vy
cmVudFN0YXRlKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRTdGF0
ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgcmV0dXJuIHRv
VjgoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZShzdGF0ZSwgc2NyaXB0Q29udGV4dCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4
dCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQg
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1
dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTY4MSwxMSArNjkw
LDEyIEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlCiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZS5fc2V0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKICAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpKSA6IDA7Ci0gICAgU2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQo
KTsKLSAgICBpZiAoIXN0YXRlKQorICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3Jp
cHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQogICAgICAgICByZXR1
cm47CisgICAgU2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoc3RhdGUsIHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYp
KTsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikp
OwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgdGhyb3dFcnJvcihzdGF0
ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybjsKQEAgLTEyMTQs
MTAgKzEyMjQsMTYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3Rh
dGVWb2lkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVtcHR5U2NyaXB0U3RhdGUg
c3RhdGU7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJy
ZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CiAgICAgaW1wLT53
aXRoU2NyaXB0U3RhdGVWb2lkKCZzdGF0ZSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiBleGNlcHRpb24gPSBzdGF0ZS5leGNlcHRpb24oKTsKKyAgICAgICAg
c3RhdGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhjZXB0
aW9uLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgfQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogfQogCkBAIC0xMjI1LDEwICsxMjQxLDE2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdFN0YXRlT2JqQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0U3RhdGVPYmoiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVt
cHR5U2NyaXB0U3RhdGUgc3RhdGU7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNj
cmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3Rh
dGU7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+d2l0aFNjcmlwdFN0YXRlT2Jq
KCZzdGF0ZSk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBl
eGNlcHRpb24gPSBzdGF0ZS5leGNlcHRpb24oKTsKKyAgICAgICAgc3RhdGUuY2xlYXJFeGNlcHRp
b24oKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhjZXB0aW9uLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgfQogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3MuSG9s
ZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtMTIzOCwxMiArMTI2MCwxOCBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb25D
YWxsYmFjayhjb25zdCB2ODo6QXJndQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewot
ICAgIEVtcHR5U2NyaXB0U3RhdGUgc3RhdGU7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0
ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJy
ZW50U3RhdGU7CiAgICAgaW1wLT53aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKCZzdGF0ZSwg
ZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4
Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGV4Y2VwdGlvbiA9IHN0YXRlLmV4
Y2VwdGlvbigpOworICAgICAgICBzdGF0ZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGNlcHRpb24sIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICB9CiAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIGZhaWw6CkBAIC0xMjU2LDEyICsxMjg0
LDE4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlT2JqRXhj
ZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICB7Ci0gICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRTdGF0ZSogY3Vy
cmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0
ZSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0U3RhdGUmIHN0YXRl
ID0gKmN1cnJlbnRTdGF0ZTsKICAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT53aXRo
U2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVj
KSkKICAgICAgICAgZ290byBmYWlsOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gZXhjZXB0aW9uID0gc3RhdGUuZXhjZXB0aW9uKCk7CisgICAgICAgIHN0YXRl
LmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbiwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIH0KICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFz
ZSgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQogICAgIGZhaWw6
CkBAIC0xMjgxLDExICsxMzE1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxiYWNrKGNvCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICBFbXB0eVNjcmlwdFN0YXRlIHN0YXRlOworICAgIFNjcmlwdFN0YXRlKiBj
dXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0
YXRlKQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRTdGF0ZSYgc3Rh
dGUgPSAqY3VycmVudFN0YXRlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaW1wLT53aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCk7Ci0g
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihz
dGF0ZS5leGNlcHRpb24oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkgeworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBleGNlcHRpb24gPSBz
dGF0ZS5leGNlcHRpb24oKTsKKyAgICAgICAgc3RhdGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhjZXB0aW9uLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
fQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCkBAIC0xMjk1LDEzICsxMzM1LDE5IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7
Ci0gICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0
YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1
cnJlbnRTdGF0ZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0g
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxUZXN0T2JqPiByZXN1bHQg
PSBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24oJnN0YXRlLCBzY3JpcHRDb250ZXh0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAg
ICAgICAgZ290byBmYWlsOwotICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
cmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
KyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gZXhjZXB0aW9uID0gc3RhdGUuZXhjZXB0aW9uKCk7CisgICAgICAgIHN0YXRlLmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbiwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIH0KICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBh
cmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQogICAgIGZhaWw6CkBAIC0x
MzEyLDExICsxMzU4LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNDCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlcyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRTdGF0
ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJl
bnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0U3RhdGUm
IHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIFJlZlB0cjxUZXN0
T2JqPiByZXN1bHQgPSBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCk7Ci0gICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkgeworICAg
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBleGNlcHRpb24gPSBzdGF0ZS5leGNlcHRpb24oKTsK
KyAgICAgICAgc3RhdGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhjZXB0aW9uLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgfQogICAgIHJldHVybiB0b1Y4
KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IApAQCAtMjM0NCw3ICsyMzk2LDcgQEAgdm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0
UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3QKIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gVjhUZXN0T2JqOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdE9i
aj4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsLmdldCgpKTsKLSAgICBBU1NFUlQoRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbC5nZXQoKSkuSXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsK
IAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5z
dGFudGlhdGVWOE9iamVjdChjcmVhdGlvbkNvbnRleHQsICZpbmZvLCBpbXBsLmdldCgpKTsKICAg
ICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IDIwNTJhOTJjM2Zl
MzliNGJjZjAxYWFmZWY0N2U5ZmVjYzM3ZjhjYzYuLmI2NjVlZGNmNGRkNzU0MDI4NzJmYjBhNjU0
YjUwYmMyNjc5ZGJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsK
ICAgICBBU1NFUlQoaW1wbCk7Ci0gICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29s
YXRlKS0+Z2V0KGltcGwpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0
KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4VGVzdE9iajo6Y3JlYXRl
V3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkBAIC02OSw3ICs2
OSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHRvVjhPYmplY3QoVGVzdE9iaiog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSkt
PmdldChpbXBsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRh
U3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwpAQCAtNzksNyArNzksNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bgogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRo
Q2hlY2soaXNvbGF0ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpOwogICAg
IGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJl
dHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggYjBmZWQ5Y2Q3ZTcwNDlkNjkw
ZWMwODcwZTAyOGEzNWY4YzAwYTRlZi4uNTQ3ZjczNjcxNDk3YzY0NTk0ZjEwMDEyZGFhMTFjM2Q5
ZTI2OWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNw
cApAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGVXcmFwcGVyKFBhc3NS
ZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NF
UlQoaW1wbC5nZXQoKSk7Ci0gICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRl
KS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6
Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25D
b250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNF
bXB0eSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4
IDE2YzNkNmZmN2FiZGFiOTk3M2YxYTBmZTY1NjdjMTc0YjU5Y2YzMTIuLmVlNzY5MjQ2ZWI0MzY4
OGFlNmJkNzc5ZTI4MTlmMGY2MzMzZThhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogaW5saW5lIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlID0gMCkKIHsKICAgICBBU1NFUlQoaW1wbCk7Ci0gICAgQVNTRVJUKERPTURhdGFTdG9yZTo6
Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpLklzRW1wdHkoKSk7CisgICAgQVNTRVJUKERPTURh
dGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIApAQCAtNjgsNyArNjgsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2
ODo6SAogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
RE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0ZSk7
CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAg
ICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTc4LDcg
Kzc4LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHYKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlt
cGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUp
LT5nZXQoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRh
U3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAyNTMyZjFlNjgxNDk2OGVlMzZhMTc5YjliMDdh
NTA0YTRmNWRlMTNhLi40MWY2YjM3NWJkNTU3NDc4ZTJhYTUxMWMzNDY2YThkMTI0ODBiMzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsCiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbC5nZXQoKSk7Ci0gICAgQVNTRVJUKERP
TURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwuZ2V0KCkpLklzRW1wdHkoKSk7
CisgICAgQVNTRVJUKERPTURhdGFTdG9yZTo6Z2V0KGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7
CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omlu
c3RhbnRpYXRlVjhPYmplY3QoY3JlYXRpb25Db250ZXh0LCAmaW5mbywgaW1wbC5nZXQoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCBlNzMxYThlODYxZGY0
ZDJhMmU1OGZmYjM3ZWRhMDgwNWRmOWMyYWYzLi42NTU2NjI2NjVlMTUwNGJkYzc2NTE4YTMzYzFj
MzJmODRhZjczOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgQVNTRVJUKGltcGwpOwotICAgIEFTU0VSVChET01E
YXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKS5Jc0VtcHR5KCkpOworICAgIEFT
U0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkpOwogICAgIHJl
dHVybiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZVdyYXBwZXIo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApAQCAtNjYsNyArNjYsNyBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB0b1Y4T2JqZWN0KFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqIGltcAogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1w
bCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpn
ZXQoaW1wbCwgaXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjoKIHsKICAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlz
b2xhdGUpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3Jh
cChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuaAppbmRleCA0YjJiNDI1ZWUzNTAwMzZhYTZmOTA3NDJkZDU2MTJl
ZjI2NjEwNmU1Li40MGU2YjE3NmJmOWRiZWEyNTY2MTVkNzIwMzMwY2Q5NTg1MjA0MGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAtNjEsMTcgKzYxLDIx
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBET01EYXRhU3RvcmUqIGN1cnJlbnQodjg6Oklzb2xh
dGUqKTsKIAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldE5vZGUoTm9kZSog
b2JqZWN0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldChUKiBvYmplY3QsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxk
Ojppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQorICAgICAgICBpZiAod3JhcHBlckNhbkJlU3RvcmVk
SW5PYmplY3Qob2JqZWN0KSAmJiBMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3Js
ZHNFeGlzdCgpKSkKKyAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmpl
Y3QpOworICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gY3VycmVudChpc29sYXRlKTsKKyAg
ICAgICAgaWYgKHdyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgc3RvcmUtPm1f
dHlwZSAhPSBJc29sYXRlZFdvcmxkKQogICAgICAgICAgICAgcmV0dXJuIGdldFdyYXBwZXJGcm9t
T2JqZWN0KG9iamVjdCk7Ci0gICAgICAgIHJldHVybiBjdXJyZW50KGlzb2xhdGUpLT5nZXQob2Jq
ZWN0KTsKKyAgICAgICAgcmV0dXJuIHN0b3JlLT5tX3dyYXBwZXJNYXAuZ2V0KG9iamVjdCk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnZXQoVCogb2JqZWN0KQorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZGVw
cmVjYXRlZEdldChUKiBvYmplY3QpCiAgICAgewotICAgICAgICBpZiAod3JhcHBlcklzU3RvcmVk
SW5PYmplY3Qob2JqZWN0KSkKKyAgICAgICAgaWYgKHdyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0
KG9iamVjdCkgJiYgbV90eXBlICE9IElzb2xhdGVkV29ybGQpCiAgICAgICAgICAgICByZXR1cm4g
Z2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG1fd3JhcHBlck1h
cC5nZXQob2JqZWN0KTsKICAgICB9CkBAIC04Nyw4ICs5MSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBib29sIHdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KHZvaWQqKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgd3JhcHBlcklzU3RvcmVkSW5PYmplY3QoU2NyaXB0V3JhcHBhYmxl
KikgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE1haW5Xb3JsZDsgfQorICAgIHN0YXRpYyBib29s
IHdyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHN0YXRpYyBib29sIHdyYXBwZXJDYW5CZVN0b3JlZEluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSop
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdl
dFdyYXBwZXJGcm9tT2JqZWN0KHZvaWQqKQogICAgIHsKQEAgLTEwNCw3ICsxMDgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2V0V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PikgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNldFdyYXBwZXJJbk9iamVj
dChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlcikKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgIT0gTWFpbldvcmxkKQorICAgICAgICBp
ZiAobV90eXBlID09IElzb2xhdGVkV29ybGQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIEFTU0VSVChvYmplY3QtPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwogICAgICAgICBvYmpl
Y3QtPnNldFdyYXBwZXIod3JhcHBlcik7CkBAIC0xMTMsOCArMTE3LDkgQEAgcHJpdmF0ZToKICAg
ICB9CiAgICAgYm9vbCBzZXRXcmFwcGVySW5PYmplY3QoTm9kZSogb2JqZWN0LCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKLSAgICAgICAgaWYgKG1fdHlwZSAhPSBN
YWluV29ybGQpCisgICAgICAgIGlmIChtX3R5cGUgPT0gSXNvbGF0ZWRXb3JsZCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSAhPSBXb3JrZXIpOwogICAg
ICAgICBBU1NFUlQob2JqZWN0LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKICAgICAgICAgb2JqZWN0
LT5zZXRXcmFwcGVyKHdyYXBwZXIpOwogICAgICAgICBWOEdDQ29udHJvbGxlcjo6ZGlkQ3JlYXRl
V3JhcHBlckZvck5vZGUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGI2MTkxMDU4NjUwMGQ3OTMzYTIz
YWViOWUzZDU1NGEzYTkyZjBjMWIuLmI5NDgyOGM0ZmNkMjJlNmE3YzYzMWQ1OTE5ZDRkZmVjOWM1
NzdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtMjIxNyw3ICsyMjE3LDcgQEAgaW5saW5lIHZvaWQgbmV1dGVy
QmluZGluZyhUKiBvYmplY3QpCiB7CiAgICAgVmVjdG9yPERPTURhdGFTdG9yZSo+JiBhbGxTdG9y
ZXMgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYWxsU3RvcmVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFsbFN0b3Jlc1tpXS0+Z2V0KG9iamVjdCk7Cisg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFsbFN0b3Jlc1tpXS0+ZGVw
cmVjYXRlZEdldChvYmplY3QpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAg
ICAgICAgICAgd3JhcHBlci0+U2V0SW5kZXhlZFByb3BlcnRpZXNUb0V4dGVybmFsQXJyYXlEYXRh
KDAsIHY4OjprRXh0ZXJuYWxCeXRlQXJyYXksIDApOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175543</attachid>
            <date>2012-11-21 16:13:04 -0800</date>
            <delta_ts>2012-11-21 16:13:04 -0800</delta_ts>
            <desc>Leaks objects in workers</desc>
            <filename>bug-102854-20121121161050.patch</filename>
            <type>text/plain</type>
            <size>11388</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFkZGFhYzk5OTkwMjU2
ZDI2YzdkYjM1MzQ3NzEwNWE1Njc2ZjNlNC4uZWNkYzNjMGZkZGQwYjEyNDZkY2UyYjJjNGI0MmJk
YTQyZjA5MDJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTIxICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1Y4XSBVbmlmeSB0aGUgTm9k
ZSBhbmQgbm9uLU5vZGUgY29kZSBwYXRocyBmb3IgZ2V0dGluZyBKYXZhU2NyaXB0IHdyYXBwZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGNvbXBsZXRlcyB0aGUgcHJvamVjdCBvZiBtZXJnaW5nIHRoZSBOb2RlIGFuZCBub24tTm9k
ZSBjb2RlCisgICAgICAgIHBhdGhzIGZvciBnZXR0aW5nIEphdmFTY3JpcHQgd3JhcHBlcnMuIEFs
bCBTY3JpcHRXcmFwcGFibGUgb2JqZWN0cworICAgICAgICBzaG91bGQgbm90IGJlIGFzIGZhc3Qg
dG8gYWNjZXNzIGFzIE5vZGVzIHdlcmUgcHJldmlvdXNseS4KKworICAgICAgICBUaGUgbWFpbiBj
aGFuZ2UgaW4gdGhpcyBwYXRjaCBpcyB0aGF0IHdlIG5vdyB1c2UgdGhlIGlubGluZSB3cmFwcGVy
CisgICAgICAgIGNhY2hlIGluIHdvcmtlcnMgYXMgd2VsbCBhcyBpbiB0aGUgbWFpbiB3b3JsZCBv
biB0aGUgbWFpbiB0aHJlYWQuIFRoYXQKKyAgICAgICAgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0byBm
aWd1cmUgb3V0IHdoZXRoZXIgd2UncmUgaW4gYSB3b3JrZXIgaW4gb3JkZXIgdG8KKyAgICAgICAg
a25vdyB3aGVuIHRoZSB1c2UgdGhlIGlubGluZSBjYWNoZS4gVGhhdCBtZWFucyBhbGwgU2NyaXB0
V3JhcHBhYmxlCisgICAgICAgIG9iamVjdHMgY2FuIHVzZSB0aGUgZmFzdC1wYXRoIGNoZWNrIGZv
ciB3aGV0aGVyIGlzb2xhdGVkIHdvcmxkcyBleGlzdAorICAgICAgICBhbmQgY2FuIHVzdWFsbHkg
c2tpcCB0byBjYWxsIGdvIHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlSYW5nZS5oOgorICAgICAgICAgICAgLSBUaGVzZSB0d28gb2JqZWN0cyBhcmUgVGhyZWFk
U2FmZVJlZkNvdW50ZWQsIHdoaWNoIGhpbnRzIHRoYXQgdGhleQorICAgICAgICAgICAgICBtaWdo
dCBiZSByZS11c2VkIGFjcm9zcyB0aHJlYWRzLiBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlLCBJJ3Zl
CisgICAgICAgICAgICAgIG1hZGUgdGhlbSBub3QgU2NyaXB0V3JhcHBhYmxlIGFueW1vcmUuIElm
IGEgc2luZ2xlIGluc3RhbmNlIG9mIGEKKyAgICAgICAgICAgICAgRE9NIG9iamVjdCBoYXMgYSB3
cmFwcGVyIGJvdGggb24gdGhlIG1haW4gdGhyZWFkIGFuZCBvbiBhIHdvcmtlcgorICAgICAgICAg
ICAgICB0aHJlYWQsIHdlJ2xsIGhhdmUgYSB3cml0ZSBjb25mbGljdCBhcyBib3RoIHRocmVhZHMg
d2lsbCB3YW50IHRvCisgICAgICAgICAgICAgIHN0b3JlIHRoZSB3cmFwcGVyIGlubGluZSBpbiB0
aGUgb2JqZWN0LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRy
R2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3Jl
OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpkZXByZWNhdGVkR2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d3JhcHBlckNhbkJlU3RvcmVkSW5PYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVySW5PYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpuZXV0ZXJCaW5kaW5nKToKKwogMjAxMi0xMS0yMSAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAppbmRleCA4NjRkYTFi
NWE2MTFjOGYwOTEzOWQ2ZmQ1ZGIzMDA2MzU1MmI0MmJlLi5iYjM3OGY4ZDUyYmU1MGY3NDI4ZjVl
MTQ2ZjFhOTVhZGYzNzVmZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXkuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC0zNiw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCS2V5IDog
cHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQktl
eT4geworY2xhc3MgSURCS2V5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQktleT4g
ewogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gS2V5QXJyYXk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJh
bmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCmlu
ZGV4IGQzNDdmODQxMDZkNjg0NTliZGNjNTk3OTBkOGM3ZDQ2NWIxMzAxZjkuLjhjNzkwOWQwODE1
MGMyZGIzZmJlNzg1YTJmY2M3YzBhM2E4MDVjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIklEQktleS5oIgotI2luY2x1ZGUgIlNjcmlwdFdy
YXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogCkBAIC0zOCw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgSURCS2V5UmFuZ2UgOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCS2V5UmFuZ2U+IHsK
K2NsYXNzIElEQktleVJhbmdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQktleVJh
bmdlPiB7CiBwdWJsaWM6CiAgICAgZW51bSBMb3dlckJvdW5kVHlwZSB7CiAgICAgICAgIExvd2Vy
Qm91bmRPcGVuLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCAxOWM5MGJlMDU3NjM2MTIyNmEwNzMyNzQ4NDY4YTdkZTFmYjZj
YWNkLi41YzU5NzliZDVlNjQ1NmM5NTVkYjYzMWRiODQ1YTlmMjhhNzFlYWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
NTMyLDEwICs1MzIsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7
bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0IHY4OjpBY2Nlc3NvckluZgogfQogRU5ECiAgICAgfSBl
bHNlIHsKLQotICAgICAgICBteSAkZ2V0Q2FjaGVkV3JhcHBlciA9ICRjb2RlR2VuZXJhdG9yLT5J
c1N1YlR5cGUoJGludGVyZmFjZSwgIk5vZGUiKSA/ICJET01EYXRhU3RvcmU6OmdldE5vZGUoaW1w
bCwgaXNvbGF0ZSkiIDogIkRPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwp
IjsKICAgICAgICAgbXkgJGNyZWF0ZVdyYXBwZXJDYWxsID0gJGN1c3RvbVdyYXAgPyAiJHt2OElu
dGVyZmFjZU5hbWV9Ojp3cmFwIiA6ICIke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIi
OwotCiAgICAgICAgIGlmICgkY3VzdG9tV3JhcCkgewogICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgPDxFTkQpOwogCkBAIC01NDcsNyArNTQ0LDcgQEAgRU5ECiBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAg
ICAgQVNTRVJUKGltcGwpOwotICAgIEFTU0VSVCgkZ2V0Q2FjaGVkV3JhcHBlci5Jc0VtcHR5KCkp
OworICAgIEFTU0VSVChET01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKS5Jc0VtcHR5KCkp
OwogICAgIHJldHVybiAkY3JlYXRlV3JhcHBlckNhbGwoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIH0KIEVORApAQCAtNTU5LDcgKzU1Niw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHRvVjhPYmplY3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAk
Z2V0Q2FjaGVkV3JhcHBlcjsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldChpbXBsLCBpc29sYXRlKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwpAQCAtNTY5LDcgKzU2Niw3IEBAIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4
TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBl
ciA9ICRnZXRDYWNoZWRXcmFwcGVyOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpnZXQoaW1wbCwgaXNvbGF0ZSk7CiAgICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTU4Niw3ICs1ODMsNyBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZgogICAgIC8vIGluIGFuIGlzb2xhdGVkIHdvcmxkLiBUaGUgZmFzdGVzdCB3
YXkgd2Uga25vdyBob3cgdG8gZG8gdGhhdCBpcyB0byBjaGVjawogICAgIC8vIHdoZXRoZXIgdGhl
IGhvbGRlcidzIGlubGluZSB3cmFwcGVyIGlzIHRoZSBzYW1lIHdyYXBwZXIgd2Ugc2VlIGluIHRo
ZQogICAgIC8vIHY4OjpBY2Nlc3NvckluZm8uCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gKGhvbGRlci0+d3JhcHBlcigpID09IGluZm8uSG9sZGVyKCkpID8gaW1wbC0+d3Jh
cHBlcigpIDogRE9NRGF0YVN0b3JlOjpnZXROb2RlKGltcGwsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAoaG9sZGVyLT53cmFwcGVyKCkg
PT0gaW5mby5Ib2xkZXIoKSkgPyBpbXBsLT53cmFwcGVyKCkgOiBET01EYXRhU3RvcmU6OmdldChp
bXBsLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgaW5mby5Ib2xkZXIo
KSwgaW5mby5HZXRJc29sYXRlKCkpOwpAQCAtMTA0Niw3ICsxMDQzLDcgQEAgRU5ECiAgICAgICAg
ICMgQ2hlY2sgZm9yIGEgd3JhcHBlciBpbiB0aGUgd3JhcHBlciBjYWNoZS4gSWYgdGhlcmUgaXMg
b25lLCB3ZSBrbm93IHRoYXQgYSBoaWRkZW4gcmVmZXJlbmNlIGhhcyBhbHJlYWR5CiAgICAgICAg
ICMgYmVlbiBjcmVhdGVkLiBJZiB3ZSBkb24ndCBmaW5kIGEgd3JhcHBlciwgd2UgY3JlYXRlIGJv
dGggYSB3cmFwcGVyIGFuZCBhIGhpZGRlbiByZWZlcmVuY2UuCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgUmVmUHRyPCRyZXR1cm5UeXBlPiByZXN1bHQgPSAke2dldHRlclN0
cmluZ307XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IHY4OjpIYW5kbGU8djg6OlZh
bHVlPihET01EYXRhU3RvcmU6OmN1cnJlbnQoaW5mby5HZXRJc29sYXRlKCkpLT5nZXQocmVzdWx0
LmdldCgpKSkgOiB2OFVuZGVmaW5lZCgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkg
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpnZXQocmVzdWx0LmdldCgpLCBp
bmZvLkdldElzb2xhdGUoKSkpIDogdjhVbmRlZmluZWQoKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkge1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3Vs
dC5nZXQoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7ICMgRklYTUU6
IENvdWxkIHVzZSB3cmFwIGhlcmUgc2luY2UgdGhlIHdyYXBwZXIgaXMgZW1wdHkuCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
XG4iKTsKQEAgLTM0NjUsMTQgKzM0NjIsMTMgQEAgc3ViIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMK
IAogICAgIG15ICRjcmVhdGVXcmFwcGVyQXJndW1lbnRUeXBlID0gR2V0UGFzc1JlZlB0clR5cGUo
JG5hdGl2ZVR5cGUpOwogICAgIG15ICRiYXNlVHlwZSA9IEJhc2VJbnRlcmZhY2VOYW1lKCRpbnRl
cmZhY2UpOwotICAgIG15ICRnZXRDYWNoZWRXcmFwcGVyID0gJGNvZGVHZW5lcmF0b3ItPklzU3Vi
VHlwZSgkaW50ZXJmYWNlLCAiTm9kZSIpID8gIkRPTURhdGFTdG9yZTo6Z2V0Tm9kZShpbXBsLmdl
dCgpLCBpc29sYXRlKSIgOiAiRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1w
bC5nZXQoKSkiOwogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiAke3Y4SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIoJHtjcmVhdGVX
cmFwcGVyQXJndW1lbnRUeXBlfSBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgQVNTRVJUKGltcGwuZ2V0KCkp
OwotICAgIEFTU0VSVCgkZ2V0Q2FjaGVkV3JhcHBlci5Jc0VtcHR5KCkpOworICAgIEFTU0VSVChE
T01EYXRhU3RvcmU6OmdldChXVEY6OmdldFB0cihpbXBsKSwgaXNvbGF0ZSkuSXNFbXB0eSgpKTsK
IEVORAogICAgIGlmICgkYmFzZVR5cGUgbmUgJGludGVyZmFjZU5hbWUpIHsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKQEAgLTM0ODcsNyArMzQ4Myw3IEBAIEVORAogICAgIGlm
IChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+c2Ny
aXB0KCktPmluaXRpYWxpemVNYWluV29ybGQoKSkgewogICAgICAgICAgICAgLy8gaW5pdGlhbGl6
ZU1haW5Xb3JsZCBtYXkgaGF2ZSBjcmVhdGVkIGEgd3JhcHBlciBmb3IgdGhlIG9iamVjdCwgcmV0
cnkgZnJvbSB0aGUgc3RhcnQuCi0gICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBET01EYXRhU3RvcmU6OmdldE5vZGUoaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CisgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6Omdl
dChpbXBsLmdldCgpLCBpc29sYXRlKTsKICAgICAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggNGIyYjQyNWVlMzUwMDM2YWE2
ZjkwNzQyZGQ1NjEyZWYyNjYxMDZlNS4uNDc5ODI5MThjMjg2ZjI1OTA3ZTg2NzBmY2QxNmY0NGJk
NGRkNDIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJO
b2RlLmgiCiAjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJWOFBlcklzb2xh
dGVEYXRhLmgiCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC02MSwxOCArNjIsMjcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIERPTURhdGFTdG9yZSogY3VycmVudCh2ODo6SXNvbGF0ZSopOwogCi0gICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0Tm9kZShOb2RlKiBvYmplY3QsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldCh2b2lk
KiBvYmplY3QsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VM
WSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQotICAgICAgICAgICAg
cmV0dXJuIGdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CiAgICAgICAgIHJldHVybiBjdXJy
ZW50KGlzb2xhdGUpLT5nZXQob2JqZWN0KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldChUKiBvYmplY3QpCisg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KFNjcmlwdFdyYXBwYWJsZSogb2Jq
ZWN0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICB7CisgICAgICAgIGlmICghRE9NV3JhcHBl
cldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0
LT53cmFwcGVyKCk7CisgICAgICAgIHJldHVybiBjdXJyZW50KGlzb2xhdGUpLT5nZXQob2JqZWN0
KTsKKyAgICB9CisKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldCh2b2lkKiBvYmplY3Qp
CisgICAgeworICAgICAgICByZXR1cm4gbV93cmFwcGVyTWFwLmdldChvYmplY3QpOworICAgIH0K
KworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0
KQogICAgIHsKLSAgICAgICAgaWYgKHdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkpCi0g
ICAgICAgICAgICByZXR1cm4gZ2V0V3JhcHBlckZyb21PYmplY3Qob2JqZWN0KTsKKyAgICAgICAg
aWYgKG1fdHlwZSA9PSBNYWluV29ybGQpCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LT53cmFw
cGVyKCk7CiAgICAgICAgIHJldHVybiBtX3dyYXBwZXJNYXAuZ2V0KG9iamVjdCk7CiAgICAgfQog
CkBAIC04NywyMSArOTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCB3cmFwcGVySXNT
dG9yZWRJbk9iamVjdCh2b2lkKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHdy
YXBwZXJJc1N0b3JlZEluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSopIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBNYWluV29ybGQ7IH0KLQotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGdldFdyYXBwZXJGcm9tT2JqZWN0KHZvaWQqKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAg
fQotCi0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZyb21PYmpl
Y3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QpCi0gICAgewotICAgICAgICByZXR1cm4gb2JqZWN0
LT53cmFwcGVyKCk7Ci0gICAgfQotCiAgICAgYm9vbCBzZXRXcmFwcGVySW5PYmplY3Qodm9pZCos
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgYm9v
bCBzZXRXcmFwcGVySW5PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICBpZiAobV90eXBlICE9IE1h
aW5Xb3JsZCkKQEAgLTExMSwxMCArMTA4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHdyYXBwZXIu
TWFrZVdlYWsob2JqZWN0LCB3ZWFrQ2FsbGJhY2spOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CisKICAgICBib29sIHNldFdyYXBwZXJJbk9iamVjdChOb2RlKiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICBpZiAobV90eXBlICE9
IE1haW5Xb3JsZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSAhPSBXb3JrZXIpOwogICAgICAgICBBU1NFUlQob2JqZWN0LT53cmFwcGVyKCkuSXNFbXB0
eSgpKTsKICAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIpOwogICAgICAgICBWOEdD
Q29udHJvbGxlcjo6ZGlkQ3JlYXRlV3JhcHBlckZvck5vZGUob2JqZWN0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>