<?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>165977</bug_id>
          
          <creation_ts>2016-12-16 16:35:16 -0800</creation_ts>
          <short_desc>WebAssembly: test imports and exports with 16-bit characters</short_desc>
          <delta_ts>2017-06-07 21:43:56 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161709</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1260813</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-16 16:35:16 -0800</bug_when>
    <thetext>The Builder should already handle these, but the parser uses consumeUTF8String which is suspicious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260815</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-16 16:36:30 -0800</bug_when>
    <thetext>*** Bug 165976 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260817</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-16 16:38:52 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The Builder should already handle these, but the parser uses
&gt; consumeUTF8String which is suspicious.

To elaborate, the implementation of consumeUTF8String looks wrong. Not the actual call to it. The implementation skips m_offset stringLength forward, which is wrong for 16 bit strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260818</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-16 16:40:13 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; The Builder should already handle these, but the parser uses
&gt; &gt; consumeUTF8String which is suspicious.
&gt; 
&gt; To elaborate, the implementation of consumeUTF8String looks wrong. Not the
&gt; actual call to it. The implementation skips m_offset stringLength forward,
&gt; which is wrong for 16 bit strings.

Nevermind. We&apos;re treating a field of number of bytes from wasm as the *string length*. This is obviously wrong for 16 bit strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261757</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-12-20 14:20:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/29760130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316723</commentid>
    <comment_count>5</comment_count>
      <attachid>312256</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-07 17:13:49 -0700</bug_when>
    <thetext>Created attachment 312256
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316725</commentid>
    <comment_count>6</comment_count>
      <attachid>312256</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-06-07 17:22:33 -0700</bug_when>
    <thetext>Comment on attachment 312256
patch

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

r=me

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:141
&gt; +        return before + String(&quot; &quot;) + String::fromUTF8(import.module) + &quot;:&quot; + String::fromUTF8(import.field) + &quot; &quot; + after;

you should use makeString here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316810</commentid>
    <comment_count>7</comment_count>
      <attachid>312275</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-06-07 21:04:34 -0700</bug_when>
    <thetext>Created attachment 312275
patch

Use makeString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316821</commentid>
    <comment_count>8</comment_count>
      <attachid>312275</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 21:43:54 -0700</bug_when>
    <thetext>Comment on attachment 312275
patch

Clearing flags on attachment: 312275

Committed r217921: &lt;http://trac.webkit.org/changeset/217921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316822</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 21:43:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312256</attachid>
            <date>2017-06-07 17:13:49 -0700</date>
            <delta_ts>2017-06-07 21:04:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-test-imports-and-exports-with-16-bit-cha.patch</filename>
            <type>text/plain</type>
            <size>37196</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4YmE1YmI5YWI2NjdiNWJjM2YzNDU0NmI2NmMzNDUxMzRhM2ZjMzM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDcgSnVuIDIwMTcgMTc6MTE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogdGVzdCBpbXBvcnRzIGFuZCBleHBvcnRzIHdpdGggMTYtYml0IGNoYXJhY3RlcnMKCi0t
LQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz
NCArKysrKysrKwogLi4uL3dhc20vZnVuY3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jv
dy5qcyAgfCAgOCArLQogLi4uL2pzLWFwaS9JbnN0YW5jZS5pbXBvcnRzLmV4cG9ydHMudW5pY29k
ZS5qcyAgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBp
L2dsb2JhbC1lcnJvci5qcyAgICAgICAgICAgICAgICB8ICA0ICstCiBKU1Rlc3RzL3dhc20vanMt
YXBpL3RhYmxlLmpzICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogSlNUZXN0cy93YXNt
L2pzLWFwaS90ZXN0X21lbW9yeS5qcyAgICAgICAgICAgICAgICAgfCAxOCArKy0tCiBKU1Rlc3Rz
L3dhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0dXJlLmpzICB8ICA4ICstCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3dlYi1hc3NlbWJseS1pbnN0YW50aWF0ZS5qcyAgICB8ICA0ICstCiBK
U1Rlc3RzL3dhc20vanMtYXBpL3dyYXBwZXItZnVuY3Rpb24uanMgICAgICAgICAgICB8ICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDE3
ICsrKysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgICAgICAgICAgICAg
IHwgMzQgKysrKy0tLS0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCAg
ICAgICAgICAgIHwgIDggKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA0
NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL0lu
c3RhbmNlLmltcG9ydHMuZXhwb3J0cy51bmljb2RlLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwZjE2MTYwLi5kNGVmODhhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDE3LTA2LTA3ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJBc3NlbWJseTogdGVzdCBpbXBvcnRzIGFuZCBleHBvcnRzIHdpdGggMTYt
Yml0IGNoYXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTk3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk3NjAxMzA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG91dHB1dCBmb3Ig
aW1wb3J0IGZhaWx1cmUgd2FzIGltcHJvdmVkLCBzbyBtYW55IHRlc3RzIG5lZWQgdG8KKyAgICAg
ICAgYmUgdXBkYXRlZCBoZXJlLiBPbmx5IG9uZSBoYXMgbmV3IHRlc3RzIGFzIG5vdGVkIGJlbG93
LgorCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9tZW1vcnktaW1wb3J0LWFuZC1ncm93
LmpzOgorICAgICAgICAqIHdhc20vanMtYXBpL0luc3RhbmNlLmltcG9ydHMuZXhwb3J0cy51bmlj
b2RlLmpzOiBBZGRlZC4gTWFpbiBuZXcgdGVzdC4KKyAgICAgICAgKGlkeE1vZHVsZSk6CisgICAg
ICAgICogd2FzbS9qcy1hcGkvZ2xvYmFsLWVycm9yLmpzOgorICAgICAgICAobmV3Lk51bWJlcik6
CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90YWJsZS5q
czoKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAobmV3LldlYkFzc2VtYmx5LlRh
YmxlKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qczoKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIHdhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0dXJlLmpz
OgorICAgICAgICAoQmFkU2lnbmF0dXJlRHJvcFN0YXJ0UGFyYW1zLik6CisgICAgICAgIChCYWRT
aWduYXR1cmVEcm9wU3RhcnRQYXJhbXMpOgorICAgICAgICAoQmFkU2lnbmF0dXJlRHJvcEVuZFBh
cmFtcy4pOgorICAgICAgICAoQmFkU2lnbmF0dXJlU3dhcFBhcmFtLik6CisgICAgICAgIChCYWRT
aWduYXR1cmVSZXQuKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS93ZWItYXNzZW1ibHktaW5zdGFu
dGlhdGUuanM6CisgICAgICAgIChhc3NlcnQuYXN5bmNUZXN0LmFzeW5jLnRlc3QpOgorICAgICAg
ICAoYXNzZXJ0LmFzeW5jVGVzdCk6CisgICAgICAgICogd2FzbS9qcy1hcGkvd3JhcHBlci1mdW5j
dGlvbi5qczoKKyAgICAgICAgKHJldHVybi5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlKToKKwogMjAx
Ny0wNi0wNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgcm9sbG91dCByMjE3ODA3LiBDYXVzZWQgYSB0ZXN0IHRvIGNyYXNoLgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL21lbW9yeS1pbXBvcnQtYW5kLWdy
b3cuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jv
dy5qcwppbmRleCAzNGNlNTlkLi4xMzk4ZDkyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jvdy5qcwpAQCAtMTIxLDExICsxMjEs
MTEgQEAgdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDIgfSwgeyBpbml0aWFsOiAyLCBtYXhp
bXVtOiA0IH0sIHUsIDEsIDIpOwogdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDQgfSwgeyBp
bml0aWFsOiAyIH0sIDAsIHUsIDIpOwogCiAvLyBEaXNhbGxvd2VkOiBpbXBvcnRlZCBpbml0aWFs
IGlzIGxlc3NlciB0aGFuIGRlY2xhcmVkLgotYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KHsgaW5p
dGlhbDogMSwgbWF4aW11bTogNCB9LCB7IGluaXRpYWw6IDIsIG1heGltdW06IDQgfSwgdSwgdSwg
MiksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2lu
aXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5pdGlh
bCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Ci1hc3NlcnQudGhyb3dzKCgpID0+IHRlc3QoeyBpbml0
aWFsOiAwLCBtYXhpbXVtOiA0IH0sIHsgaW5pdGlhbDogMiwgbWF4aW11bTogNCB9LCB1LCB1LCAy
KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5p
dGlhbCcgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFs
JyBpbXBvcnQgbWVtb3J5IHNpemVgKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gdGVzdCh7IGluaXRp
YWw6IDEsIG1heGltdW06IDQgfSwgeyBpbml0aWFsOiAyLCBtYXhpbXVtOiA0IH0sIHUsIHUsIDIp
LCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgcHJvdmlk
ZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJl
ZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Cithc3NlcnQudGhyb3dzKCgpID0+IHRl
c3QoeyBpbml0aWFsOiAwLCBtYXhpbXVtOiA0IH0sIHsgaW5pdGlhbDogMiwgbWF4aW11bTogNCB9
LCB1LCB1LCAyKSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpbXA6bWVt
b3J5IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUgbW9kdWxl
J3MgZGVjbGFyZWQgJ2luaXRpYWwnIGltcG9ydCBtZW1vcnkgc2l6ZWApOwogCiAvLyBEaXNhbGxv
d2VkOiBpbXBvcnRlZCBtYXhpbXVtIGlzIGdyZWF0ZXIgdGhhbiBkZWNsYXJlZC4KLWFzc2VydC50
aHJvd3MoKCkgPT4gdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDUgfSwgeyBpbml0aWFsOiAy
LCBtYXhpbXVtOiA0IH0sIHUsIHUsIDIpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkg
aW1wb3J0IHByb3ZpZGVkIGEgJ21heGltdW0nIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVs
ZSdzIGRlY2xhcmVkICdtYXhpbXVtJyBpbXBvcnQgbWVtb3J5IHNpemVgKTsKK2Fzc2VydC50aHJv
d3MoKCkgPT4gdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDUgfSwgeyBpbml0aWFsOiAyLCBt
YXhpbXVtOiA0IH0sIHUsIHUsIDIpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1w
b3J0IGltcDptZW1vcnkgcHJvdmlkZWQgYSAnbWF4aW11bScgdGhhdCBpcyBsYXJnZXIgdGhhbiB0
aGUgbW9kdWxlJ3MgZGVjbGFyZWQgJ21heGltdW0nIGltcG9ydCBtZW1vcnkgc2l6ZWApOwogCiAv
LyBEaXNhbGxvd2VkOiBubyBpbXBvcnRlZCBtYXhpbXVtLCBzYW1lIGFzIGFib3ZlLgotYXNzZXJ0
LnRocm93cygoKSA9PiB0ZXN0KHsgaW5pdGlhbDogMiB9LCB7IGluaXRpYWw6IDIsIG1heGltdW06
IDQgfSwgMCwgdSwgMiksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgZGlk
IG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9l
c2ApOworYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KHsgaW5pdGlhbDogMiB9LCB7IGluaXRpYWw6
IDIsIG1heGltdW06IDQgfSwgMCwgdSwgMiksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9y
eSBpbXBvcnQgaW1wOm1lbW9yeSBkaWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1
bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMt
YXBpL0luc3RhbmNlLmltcG9ydHMuZXhwb3J0cy51bmljb2RlLmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS9JbnN0YW5jZS5pbXBvcnRzLmV4cG9ydHMudW5pY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lODZjMjA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL2pzLWFwaS9JbnN0YW5jZS5pbXBvcnRzLmV4cG9ydHMudW5pY29kZS5qcwpAQCAtMCwwICsx
LDk2IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKK2ltcG9ydCAqIGFz
IGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCisvLyBJbnRlcmVzdGluZyBVbmljb2RlIGNv
cm5lciBjYXNlcy4KKworY29uc3QgbmFtZXMgPSBbCisgICAgIiIsIC8vIEVtcHR5IHN0cmluZy4K
KyAgICAiXHUwMDAwIiwgLy8gTlVMCisgICAgIuKQgCIsIC8vIFNZTUJPTCBGT1IgTlVMCisgICAg
Ilx1ZmVmZiIsIC8vIEJZVEUgT1JERVIgTUFSSworICAgICJcdWZmZmMiLCAvLyBPQkpFQ1QgUkVQ
TEFDRU1FTlQgQ0hBUkFDVEVSCisgICAgIu+/vSIsIC8vIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiBp
biBjYXNlIGFueXRoaW5nIGdldHMgc3Vic3RpdHV0ZWQgdGhpcyB3b3VsZCBiZSBhIGR1cGxpY2F0
ZSwgd2hpY2ggV2ViQXNzZW1ibHkgZGlzYWxsb3dzLgorICAgICJcdWZmZmUiLCAvLyBOT05DSEFS
QUNURVItRkZGRQorICAgICJcdWZmZmYiLCAvLyBOT05DSEFSQUNURVItRkZGRgorICAgICJcdTIw
MGUiLCAvLyBMRUZULVRPLVJJR0hUIE1BUksKKyAgICAiXHUyMDBmIiwgLy8gUklHSFQtVE8tTEVG
VCBNQVJLCisgICAgIlx1MjAyYSIsIC8vIExFRlQtVE8tUklHSFQgRU1CRURESU5HCisgICAgIlx1
MjAyYiIsIC8vIFJJR0hULVRPLUxFRlQgRU1CRURESU5HCisgICAgIlx1MjAyZCIsIC8vIExFRlQt
VE8tUklHSFQgT1ZFUlJJREUKKyAgICAiXHUyMDJlIiwgLy8gUklHSFQtVE8tTEVGVCBPVkVSUklE
RQorICAgICJcdTIwMmMiLCAvLyBQT1AgRElSRUNUSU9OQUwgRk9STUFUVElORworICAgICLwn4eo
8J+HpiIsIC8vIFJFR0lPTkFMIElORElDQVRPUiBTWU1CT0wgTEVUVEVSIEMgKyBSRUdJT05BTCBJ
TkRJQ0FUT1IgU1lNQk9MIExFVFRFUiBBCisgICAgIvCfiLkiLCAvLyBQTEFZSU5HIENBUkQgQkxB
Q0sgSk9LRVIKKyAgICAi8J+RqOKAjeKdpO+4j+KAjfCfkovigI3wn5GoIiwgLy8gQ29tYmluZSBh
IGJ1bmNoIG9mIGVtb2ppCisKKyAgICAvLyBEdXBsaWNhdGUgZW50cmllcyBhcmUgaW52YWxpZCwg
c28gbm9ybWFsaXphdGlvbiB3b3VsZCBjYXVzZSBpc3N1ZXMuIFdlIHdhbnQgdG8gY2F0Y2ggdGhv
c2UgaXNzdWVzLgorICAgICLtlZzquIAiLAorICAgICLhhJLhhaHhhqvhhIDhhbPhhq8iLCAvLyBO
b3JtYWxpemVkIHZlcnNpb24gb2YgdGhlIGFib3ZlLgorICAgICLDhSIsIC8vIExBVElOIENBUElU
QUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgIuKEqyIsIC8vIEFOR1NUUk9NIFNJR04K
KyAgICAiQcyKIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSArIENPTUJJTklORyBSSU5HIEFC
T1ZFCisgICAgIkHMgCIsIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgKyBDT01CSU5JTkcgR1JB
VkUgQUNDRU5UCisgICAgIsOAIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZF
CisgICAgIuG6pcyoIiwgLy8gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFO
RCBBQ1VURSArIENPTUJJTklORyBPR09ORUsKKyAgICAixIXMgsyBIiwgLy8gTEFUSU4gU01BTEwg
TEVUVEVSIEEgV0lUSCBPR09ORUsgKyBDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgKyBDT01C
SU5JTkcgQUNVVEUgQUNDRU5UCisgICAgIlHMgMyjIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIg
USArIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgKyBDT01CSU5JTkcgRE9UIEJFTE9XCisgICAgIlHM
o8yAIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgKyBDT01CSU5JTkcgRE9UIEJFTE9XICsgQ09N
QklOSU5HIEdSQVZFIEFDQ0VOVAorCisgICAgLy8gQ29tYmluZSB3YXkgdG9vIG1hbnkgdGhpbmdz
OgorCisKKworICAgICJKzILNr8yBzILNhs2DzILMkc2lzafNpM2LzJTNpcyozJvMuM2ZzJnMscyv
zLrMls2UzY7Mo82TzKzNic2TzZnNlM2IzKXMls2OYcyAzYLNq8yFzabNpsyIzITMicyFzL7Misy9
zZHMms2szJvMt82gzZ/MpMy7zKbNk82TzJbMqsyfzZN2zYbMv82pzZfNqcyAzafNgs2GzL7Mgc2R
zabNrcy9zabMoc2YzYDNmc2VzJ/NjsywYc2Mza7Nl8yazYTNisyKzJHMicyVzKfMu82WzZPMl8y7
zKlTzarNp8yBzZLMlMy/zIjNq82lzIfNpsyPzZDMg82tzIHNrc2izKHNnc2WzLHNiM2azYnMqcy6
zY5jzavMvc2kzJPMisyHzYbMgM2rzYLMks2QzazMh8yazYLMic2SzavMp82ezZjMp82OzK7MpM2F
zJnMl8y7zK/NlsyuzJnMsMyecsyHzYPNm8yFzJHMicyPzYLNo8yBzI/Ni8yBzYPMmsy3zZPNhcy5
zYjMrsyqzZTNk8yracyPzJrNqs2pzI3Mvc2jzIrNrs2ezY/MtM2AzLXMr8y5zKDNls2IzKDNjsym
cMyPzI/Nr82QzafNi8yKzIPMiMyIzaLNgc2ZzJ3Ml8ylzLvMr8ywzZrMq3TNg8yQzavMgMyLzYPN
ncy3zY3Njsy7zKnMoMyszJnMpsywzZPMqcyXzJ3MscyjIiwKKworCisKKworXTsKKworLy8gV2Vi
QXNzZW1ibHkgaW1wb3J0IG9iamVjdHMgaGF2ZSBhIHR3by1sZXZlbCBuYW1lc3BhY2Ugd2l0aCBt
b2R1bGUgYW5kIGZpZWxkLiBCb3RoIG11c3QgYmUgVVRGLTguCitsZXQgaW1wb3J0T2JqZWN0ID0g
e307Citmb3IgKGxldCBpZHhNb2R1bGUgPSAwOyBpZHhNb2R1bGUgPCBuYW1lcy5sZW5ndGg7ICsr
aWR4TW9kdWxlKSB7CisgICAgYXNzZXJ0LmZhbHN5KGltcG9ydE9iamVjdC5oYXNPd25Qcm9wZXJ0
eShuYW1lc1tpZHhNb2R1bGVdKSk7CisgICAgaW1wb3J0T2JqZWN0W25hbWVzW2lkeE1vZHVsZV1d
ID0ge307CisgICAgZm9yIChsZXQgaWR4RmllbGQgPSAwOyBpZHhGaWVsZCA8IG5hbWVzLmxlbmd0
aDsgKytpZHhGaWVsZCkgeworICAgICAgICBhc3NlcnQuZmFsc3koaW1wb3J0T2JqZWN0W25hbWVz
W2lkeE1vZHVsZV1dLmhhc093blByb3BlcnR5KG5hbWVzW2lkeEZpZWxkXSkpOworICAgICAgICBp
bXBvcnRPYmplY3RbbmFtZXNbaWR4TW9kdWxlXV1bbmFtZXNbaWR4RmllbGRdXSA9ICgpID0+IDEw
MDAwICogaWR4TW9kdWxlICsgaWR4RmllbGQ7CisgICAgfQorfQorCitsZXQgYiA9IChuZXcgQnVp
bGRlcigpKQorICAgIC5UeXBlKCkuRW5kKCk7CisKK2IgPSBiLkltcG9ydCgpOworZm9yIChsZXQg
aWR4TW9kdWxlID0gMDsgaWR4TW9kdWxlIDwgbmFtZXMubGVuZ3RoOyArK2lkeE1vZHVsZSkKKyAg
ICBmb3IgKGxldCBpZHhGaWVsZCA9IDA7IGlkeEZpZWxkIDwgbmFtZXMubGVuZ3RoOyArK2lkeEZp
ZWxkKQorICAgICAgICBiID0gYi5GdW5jdGlvbihuYW1lc1tpZHhNb2R1bGVdLCBuYW1lc1tpZHhG
aWVsZF0sIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KTsKK2IgPSBiLkVuZCgpOworCitiID0g
Yi5GdW5jdGlvbigpLkVuZCgpOworCitiID0gYi5FeHBvcnQoKTsKK2ZvciAobGV0IGlkeCA9IDA7
IGlkeCA8IG5hbWVzLmxlbmd0aDsgKytpZHgpCisgICAgYiA9IGIuRnVuY3Rpb24obmFtZXNbaWR4
XSk7CitiID0gYi5FbmQoKTsKKworYiA9IGIuQ29kZSgpOworZm9yIChsZXQgaWR4ID0gMDsgaWR4
IDwgbmFtZXMubGVuZ3RoOyArK2lkeCkKKyAgICBiID0gYi5GdW5jdGlvbihuYW1lc1tpZHhdLCB7
IHBhcmFtczogW10sIHJldDogImkzMiIgfSkuSTMyQ29uc3QoaWR4KS5SZXR1cm4oKS5FbmQoKTsK
K2IgPSBiLkVuZCgpOworCitjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGIu
V2ViQXNzZW1ibHkoKS5nZXQoKSk7CisKK2ZvciAobGV0IGlkeE1vZHVsZSA9IDA7IGlkeE1vZHVs
ZSA8IG5hbWVzLmxlbmd0aDsgKytpZHhNb2R1bGUpICAgCisgICAgZm9yIChsZXQgaWR4RmllbGQg
PSAwOyBpZHhGaWVsZCA8IG5hbWVzLmxlbmd0aDsgKytpZHhGaWVsZCkgeworICAgICAgICBhc3Nl
cnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMobW9kdWxlKVtpZHhNb2R1bGUgKiBuYW1l
cy5sZW5ndGggKyBpZHhGaWVsZF0ubW9kdWxlLCBuYW1lc1tpZHhNb2R1bGVdKTsKKyAgICAgICAg
YXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG1vZHVsZSlbaWR4TW9kdWxlICog
bmFtZXMubGVuZ3RoICsgaWR4RmllbGRdLm5hbWUsIG5hbWVzW2lkeEZpZWxkXSk7CisgICAgfQor
Citmb3IgKGxldCBpZHggPSAwOyBpZHggPCBuYW1lcy5sZW5ndGg7ICsraWR4KQorICAgIGFzc2Vy
dC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyhtb2R1bGUpW2lkeF0ubmFtZSwgbmFtZXNb
aWR4XSk7CisKK2NvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSwgaW1wb3J0T2JqZWN0KTsKKworZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgbmFtZXMubGVuZ3Ro
OyArK2lkeCkKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0c1tuYW1lc1tpZHhdXSgpLCBp
ZHgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9nbG9iYWwtZXJyb3IuanMgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL2dsb2JhbC1lcnJvci5qcwppbmRleCBhZWU3NTM1Li4wOWY4ZDc5
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL2dsb2JhbC1lcnJvci5qcworKysgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL2dsb2JhbC1lcnJvci5qcwpAQCAtMTg1LDcgKzE4NSw3IEBAIGZv
ciAoIGxldCBpbXAgb2YgW3VuZGVmaW5lZCwgbnVsbCwge30sICgpID0+IHt9LCAibnVtYmVyIiwg
bmV3IE51bWJlcig0KV0pIHsKICAgICBiaW4udHJpbSgpOwogCiAgICAgY29uc3QgbW9kdWxlID0g
bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpOwotICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiBpbXAg
fSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCAiaW1wb3J0ZWQgZ2xvYmFsIG11c3QgYmUgYSBu
dW1iZXIgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1w
OiB7IGdsb2JhbDogaW1wIH0gfSknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiBpbXAgfSB9KSwgV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLCAiaW1wb3J0ZWQgZ2xvYmFsIGltcDpnbG9iYWwgbXVzdCBiZSBh
IG51bWJlciAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBp
bXA6IHsgZ2xvYmFsOiBpbXAgfSB9KScpIik7CiB9CiAKIHsKQEAgLTIwOCw1ICsyMDgsNSBAQCBm
b3IgKCBsZXQgaW1wIG9mIFt1bmRlZmluZWQsIG51bGwsIHt9LCAoKSA9PiB7fSwgIm51bWJlciIs
IG5ldyBOdW1iZXIoNCldKSB7CiAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAgIC5H
bG9iYWwoKS5HZXRHbG9iYWwoImk2NCIsIDAsICJpbW11dGFibGUiKS5FbmQoKTsKICAgICBjb25z
dCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5n
ZXQoKSk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7IGltcDogeyBnbG9iYWw6IHVuZGVmaW5lZCB9IH0pLCBXZWJBc3NlbWJseS5MaW5r
RXJyb3IsICJpbXBvcnRlZCBnbG9iYWwgY2Fubm90IGJlIGFuIGk2NCAoZXZhbHVhdGluZyAnbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiB1bmRlZmluZWQg
fSB9KScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobW9kdWxlLCB7IGltcDogeyBnbG9iYWw6IHVuZGVmaW5lZCB9IH0pLCBXZWJBc3NlbWJseS5M
aW5rRXJyb3IsICJpbXBvcnRlZCBnbG9iYWwgaW1wOmdsb2JhbCBjYW5ub3QgYmUgYW4gaTY0IChl
dmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBnbG9i
YWw6IHVuZGVmaW5lZCB9IH0pJykiKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGFibGUuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCmluZGV4IGQ1NWEzNTAu
LjM5MTg1OGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMKKysrIGIv
SlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcwpAQCAtMTkzLDEwICsxOTMsMTAgQEAgZnVuY3Rp
b24gYXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVEZXNjcmlwdGlvbiwgbWVzc2FnZSkgewogICAg
IH0KIAogICAgIGNvbnN0IGJhZFRhYmxlcyA9IFsKLSAgICAgICAgW3tpbml0aWFsOiAxMDAsIG1h
eGltdW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5p
dGlhbDoxMDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IGRvZXMgbm90IGhh
dmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIChldmFs
dWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7dGFibGV9fSkn
KSJdLAotICAgICAgICBbe2luaXRpYWw6IDEwMCwgbWF4aW11bToxMDAsIGVsZW1lbnQ6ImFueWZ1
bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEwMCwgbWF4aW11bToxMDEsIGVs
ZW1lbnQ6ICJhbnlmdW5jIn0pLCAiSW1wb3J0ZWQgVGFibGUncyAnbWF4aW11bScgaXMgbGFyZ2Vy
IHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyAoZXZhbHVhdGluZyAnbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pJykiXSwKLSAgICAgICAg
W3tpbml0aWFsOiAxMDAsIGVsZW1lbnQ6ImFueWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxl
KHtpbml0aWFsOjEwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwgIlRhYmxlIGltcG9ydCBwcm92aWRl
ZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KScpIl0sCi0gICAgICAgIFt7aW5p
dGlhbDogMTAsIGVsZW1lbnQ6ImFueWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0
aWFsOjksIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IHByb3ZpZGVkIGFuICdp
bml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAx
MDAsIG1heGltdW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJs
ZSh7aW5pdGlhbDoxMDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IGltcDp0
YWJsZSBkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRo
YXQgaXQgZG9lcyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
e2ltcDoge3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMDAsIG1heGltdW06MTAw
LCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxMDAs
IG1heGltdW06MTAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwgIkltcG9ydGVkIFRhYmxlIGltcDp0
YWJsZSAnbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhp
bXVtJyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDog
e3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMDAsIGVsZW1lbnQ6ImFueWZ1bmMi
fSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEwLCBlbGVtZW50OiAiYW55ZnVuYyJ9
KSwgIlRhYmxlIGltcG9ydCBpbXA6dGFibGUgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMg
dG9vIHNtYWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
aW1wOiB7dGFibGV9fSknKSJdLAorICAgICAgICBbe2luaXRpYWw6IDEwLCBlbGVtZW50OiJhbnlm
dW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDo5LCBlbGVtZW50OiAiYW55ZnVu
YyJ9KSwgIlRhYmxlIGltcG9ydCBpbXA6dGFibGUgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQg
aXMgdG9vIHNtYWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7aW1wOiB7dGFibGV9fSknKSJdLAogICAgIF07CiAgICAgZm9yIChjb25zdCBbZCwgdCwgbV0g
b2YgYmFkVGFibGVzKSB7CiAgICAgICAgIGFzc2VydEJhZFRhYmxlSW5zdGFuY2UoZCwgdCwgbSk7
CkBAIC0yNTEsNyArMjUxLDcgQEAgZnVuY3Rpb24gYXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVE
ZXNjcmlwdGlvbiwgbWVzc2FnZSkgewogICAgICAgICAgICAgLkNvZGUoKQogICAgICAgICAgICAg
LkVuZCgpOwogICAgICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1
aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSk7Ci0gICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pLCBXZWJBc3Nl
bWJseS5MaW5rRXJyb3IsICJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFz
c2VtYmx5LlRhYmxlIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7aW1wOiB7dGFibGV9fSknKSIpOworICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KSwgV2ViQXNzZW1ibHku
TGlua0Vycm9yLCAiVGFibGUgaW1wb3J0IGltcDp0YWJsZSBpcyBub3QgYW4gaW5zdGFuY2Ugb2Yg
V2ViQXNzZW1ibHkuVGFibGUgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHtpbXA6IHt0YWJsZX19KScpIik7CiAgICAgfQogICAgIGFzc2VydEJhZFRhYmxlKDI1
KTsKICAgICBhc3NlcnRCYWRUYWJsZShuZXcgT2JqZWN0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVt
b3J5LmpzCmluZGV4IGU2ZDY4YzIuLjUyMDU5OTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9q
cy1hcGkvdGVzdF9tZW1vcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9y
eS5qcwpAQCAtMzE4LDEzICszMTgsMTMgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBt
b2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CiAKICAgICBhc3NlcnQudGhyb3dz
KCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIDIwKSwgVHlwZUVycm9yLCBg
c2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUgdW5kZWZpbmVk
IG9yIGFuIE9iamVjdGApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSwge30pLCBUeXBlRXJyb3IsIGBpbXBvcnQgbXVzdCBiZSBhbiBvYmpl
Y3RgKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHtpbXA6IHsgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9y
dCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7Ci0gICAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1l
bW9yeTogMjAgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpcyBu
b3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7Ci0gICAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTog
W10gfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpcyBub3QgYW4g
aW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMTksIG1heGltdW06IDI1fSkgfSB9KSwgV2ViQXNz
ZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhh
dCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFsJyBpbXBvcnQg
bWVtb3J5IHNpemVgKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtp
bml0aWFsOiAyMH0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQg
ZGlkIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQg
ZG9lc2ApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6
IDIwLCBtYXhpbXVtOiAyNn0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBp
bXBvcnQgcHJvdmlkZWQgYSAnbWF4aW11bScgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxl
J3MgZGVjbGFyZWQgJ21heGltdW0nIGltcG9ydCBtZW1vcnkgc2l6ZWApOworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge30pLCBUeXBlRXJy
b3IsIGBpbXBvcnQgaW1wOm1lbW9yeSBtdXN0IGJlIGFuIG9iamVjdGApOworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyB9IH0p
LCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgaXMgbm90
IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeWApOworICAgIGFzc2VydC50aHJvd3Mo
KCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IDIw
IH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaW1wOm1lbW9yeSBp
cyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7CisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9y
eTogW10gfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpbXA6bWVt
b3J5IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnlgKTsKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsg
bWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOSwgbWF4aW11bTogMjV9
KSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkg
cHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBk
ZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7CisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTog
bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMjB9KSB9IH0pLCBXZWJBc3NlbWJseS5M
aW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgZGlkIG5vdCBoYXZlIGEgJ21heGlt
dW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lc2ApOworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1v
cnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIwLCBtYXhpbXVtOiAyNn0pIH0g
fSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaW1wOm1lbW9yeSBwcm92
aWRlZCBhICdtYXhpbXVtJyB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJl
ZCAnbWF4aW11bScgaW1wb3J0IG1lbW9yeSBzaXplYCk7CiB9KTsKIAogdGVzdChmdW5jdGlvbigp
IHsKQEAgLTM1NCw4ICszNTQsOCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGluc3RhbmNlT2Jq
KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBleHBlY3RlZEVycm9yKTsKICAgICB9CiAKLSAgICB0
ZXN0TWVtSW1wb3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6IDE5LCBtYXhpbXVtOiAyNX0pIH0gfSwgYE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQg
YW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAn
aW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Ci0gICAgdGVzdE1lbUltcG9ydEVycm9yKHtp
bXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOX0pIH0gfSwg
YE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFu
IHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Cisg
ICAgdGVzdE1lbUltcG9ydEVycm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVt
b3J5KHtpbml0aWFsOiAxOSwgbWF4aW11bTogMjV9KSB9IH0sIGBNZW1vcnkgaW1wb3J0IGltcDpt
ZW1vcnkgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1
bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7CisgICAgdGVzdE1l
bUltcG9ydEVycm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0
aWFsOiAxOX0pIH0gfSwgYE1lbW9yeSBpbXBvcnQgaW1wOm1lbW9yeSBwcm92aWRlZCBhbiAnaW5p
dGlhbCcgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFs
JyBpbXBvcnQgbWVtb3J5IHNpemVgKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0aHJvdy4K
ICAgICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7bWVtb3J5OiBuZXcg
V2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjIwfSl9fSk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0dXJlLmpzIGIvSlNUZXN0cy93YXNt
L2pzLWFwaS93YXNtLXRvLXdhc20tYmFkLXNpZ25hdHVyZS5qcwppbmRleCBkNjliYTJjLi4xNjk0
MTFiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2ln
bmF0dXJlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvd2FzbS10by13YXNtLWJhZC1zaWdu
YXR1cmUuanMKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgbWFrZUltcG9ydGVlID0gc2lnbmF0dXJl
ID0+IHsKICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gc2lnbmF0dXJlLnBhcmFtcy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgY29uc3QgYmFkUGFyYW1TaWduYXR1cmUgPSB7IHBhcmFt
czogc2lnbmF0dXJlLnBhcmFtcy5zbGljZShpLCBzaWduYXR1cmUucGFyYW1zLmxlbmd0aCksIHJl
dDogc2lnbmF0dXJlLnJldCB9OwogICAgICAgICAgICAgY29uc3QgaW1wb3J0ZXIgPSBtYWtlSW1w
b3J0ZXIoYmFkUGFyYW1TaWduYXR1cmUpOwotICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9lc24ndCBtYXRj
aCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKKyAg
ICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGlt
cG9ydGVyLCBpbXBvcnRlZSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYGltcG9ydGVkIGZ1bmN0
aW9uIGV4cG9ydHM6JHtpbXBvcnROYW1lfSBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJv
dmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKICAgICAgICAgfQog
ICAgIH0KIH0pKCk7CkBAIC03Myw3ICs3Myw3IEBAIGNvbnN0IG1ha2VJbXBvcnRlZSA9IHNpZ25h
dHVyZSA9PiB7CiAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc2lnbmF0dXJlLnBhcmFtcy5s
ZW5ndGg7ICsraSkgewogICAgICAgICAgICAgY29uc3QgYmFkUGFyYW1TaWduYXR1cmUgPSB7IHBh
cmFtczogc2lnbmF0dXJlLnBhcmFtcy5zbGljZSgwLCBpKSwgcmV0OiBzaWduYXR1cmUucmV0IH07
CiAgICAgICAgICAgICBjb25zdCBpbXBvcnRlciA9IG1ha2VJbXBvcnRlcihiYWRQYXJhbVNpZ25h
dHVyZSk7Ci0gICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBpbXBv
cnRlZCBmdW5jdGlvbidzIHNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJB
c3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKGltcG9ydGVyLCBpbXBvcnRlZSknKWApOworICAgICAgICAgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwg
V2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24gZXhwb3J0czoke2ltcG9y
dE5hbWV9IHNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBm
dW5jdGlvbidzIHNpZ25hdHVyZSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KGltcG9ydGVyLCBpbXBvcnRlZSknKWApOwogICAgICAgICB9CiAgICAgfQogfSkoKTsKQEAgLTg3
LDcgKzg3LDcgQEAgY29uc3QgbWFrZUltcG9ydGVlID0gc2lnbmF0dXJlID0+IHsKICAgICAgICAg
ICAgICAgICBiYWRQYXJhbXNbc2lnbmF0dXJlSW5kZXhdID0gc3dhcFR5cGVOb25Wb2lkKGJhZFBh
cmFtc1tzaWduYXR1cmVJbmRleF0sIHR5cGVJbmRleCk7CiAgICAgICAgICAgICAgICAgY29uc3Qg
YmFkUGFyYW1TaWduYXR1cmUgPSB7IHBhcmFtczogYmFkUGFyYW1zLCByZXQ6IHNpZ25hdHVyZS5y
ZXQgfTsKICAgICAgICAgICAgICAgICBjb25zdCBpbXBvcnRlciA9IG1ha2VJbXBvcnRlcihiYWRQ
YXJhbVNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwgV2ViQXNzZW1ibHkuTGlu
a0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUg
cHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRpbmcgJ25l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBv
cnRlciwgaW1wb3J0ZWUpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBpbXBvcnRlZCBmdW5jdGlv
biBleHBvcnRzOiR7aW1wb3J0TmFtZX0gc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3Zp
ZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIChldmFsdWF0aW5nICduZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKScpYCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CkBAIC05OSw3ICs5OSw3IEBAIGNvbnN0IG1ha2VJbXBvcnRlZSA9
IHNpZ25hdHVyZSA9PiB7CiAgICAgICAgIGZvciAobGV0IHR5cGVJbmRleCA9IDE7IHR5cGVJbmRl
eCA8IHR5cGVzLmxlbmd0aDsgKyt0eXBlSW5kZXgpIHsKICAgICAgICAgICAgIGNvbnN0IGJhZFBh
cmFtU2lnbmF0dXJlID0geyBwYXJhbXM6IHNpZ25hdHVyZS5wYXJhbXMsIHJldDogc3dhcFR5cGUo
c2lnbmF0dXJlLnJldCwgdHlwZUluZGV4KSB9OwogICAgICAgICAgICAgY29uc3QgaW1wb3J0ZXIg
PSBtYWtlSW1wb3J0ZXIoYmFkUGFyYW1TaWduYXR1cmUpOwotICAgICAgICAgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwg
V2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9l
c24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUg
KGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUp
JylgKTsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKGltcG9ydGVyLCBpbXBvcnRlZSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYGltcG9y
dGVkIGZ1bmN0aW9uIGV4cG9ydHM6JHtpbXBvcnROYW1lfSBzaWduYXR1cmUgZG9lc24ndCBtYXRj
aCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRp
bmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKICAg
ICAgICAgfQogICAgIH0KIH0pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3dl
Yi1hc3NlbWJseS1pbnN0YW50aWF0ZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvd2ViLWFzc2Vt
Ymx5LWluc3RhbnRpYXRlLmpzCmluZGV4IGViM2U5OWIuLmY2MDY3MjUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5LWluc3RhbnRpYXRlLmpzCisrKyBiL0pTVGVz
dHMvd2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5LWluc3RhbnRpYXRlLmpzCkBAIC0xMDMsNyArMTAz
LDcgQEAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlLmxlbmd0aCwgMSk7CiAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICBsZXQge21vZHVsZSwgaW5zdGFuY2V9ID0gYXdhaXQgV2Vi
QXNzZW1ibHkuaW5zdGFudGlhdGUoYmluLCB7aW1wOiB7bWVtb3J5OiAyMH19KTsKICAgICAgICAg
fSBjYXRjaChlKSB7Ci0gICAgICAgICAgICBhc3NlcnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGlt
cG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5Iik7CisgICAgICAg
ICAgICBhc3NlcnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9ydCBpbXA6bWVtb3J5IGlzIG5v
dCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTMxLDcgKzEzMSw3IEBAIGFzc2VydC5lcShXZWJBc3NlbWJseS5pbnN0YW50aWF0ZS5s
ZW5ndGgsIDEpOwogICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZShiaW4pOwogICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHku
aW5zdGFudGlhdGUoYmluLCB7aW1wOiB7bWVtb3J5OiAyMH19KTsKICAgICAgICAgfSBjYXRjaChl
KSB7Ci0gICAgICAgICAgICBhc3NlcnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9ydCBpcyBu
b3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5Iik7CisgICAgICAgICAgICBhc3Nl
cnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9ydCBpbXA6bWVtb3J5IGlzIG5vdCBhbiBpbnN0
YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS93cmFwcGVyLWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy93
YXNtL2pzLWFwaS93cmFwcGVyLWZ1bmN0aW9uLmpzCmluZGV4IDcxYTUwZWUuLjQ2Mjk0ZTcgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvd3JhcHBlci1mdW5jdGlvbi5qcworKysgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL3dyYXBwZXItZnVuY3Rpb24uanMKQEAgLTQ1LDcgKzQ1LDcgQEAg
ZnVuY3Rpb24gZXhwb3J0SW1wb3J0KHR5cGUpIHsKICAgICAgICAgICAgIC5Db2RlKCkuRW5kKCk7
CiAgICAgICAgIGxldCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKSk7CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0eXBlIGNoZWNr
LgotICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHtpbXA6IHtmOiBpbnN0YW5jZS5leHBvcnRzLmZ1bmN9fSksIFdlYkFzc2VtYmx5Lkxp
bmtFcnJvciwgImltcG9ydGVkIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhl
IHByb3ZpZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIik7CisgICAgICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDog
e2Y6IGluc3RhbmNlLmV4cG9ydHMuZnVuY319KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCAiaW1w
b3J0ZWQgZnVuY3Rpb24gaW1wOmYgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVk
IFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIik7CiAgICAgfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCBiMjY2YTU3Li5kMzFmYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wNi0wNyAgSkYgQmFzdGllbiAgPGpmYmFzdGll
bkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IHRlc3QgaW1wb3J0cyBhbmQgZXhw
b3J0cyB3aXRoIDE2LWJpdCBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NzYw
MTMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0aGUgbWlzc2luZyBVVEYtOCBjb252ZXJzaW9ucy4gSW1wcm92ZSBpbXBvcnQgZmFpbHVyZSBl
cnJvcgorICAgICAgICBtZXNzYWdlcywgb3RoZXJ3aXNlIGl0J3MgaGFyZCB0byBmaWd1cmUgb3V0
IHdoaWNoIGltcG9ydCBpcyB3cm9uZy4KKworICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVh
dGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisKIDIwMTctMDYtMDYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgT01HIHRp
ZXIgdXAgY2hlY2tzIHNob3VsZCBiZSBhIHBhdGNocG9pbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDM2
MTBkYjMuLjI4ZGZmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMTM3LDYgKzEzNywxMCBAQCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9OwogCisg
ICAgYXV0byBpbXBvcnRGYWlsTWVzc2FnZSA9IFsmXSAoY29uc3QgV2FzbTo6SW1wb3J0JiBpbXBv
cnQsIGNvbnN0IGNoYXIqIGJlZm9yZSwgY29uc3QgY2hhciogYWZ0ZXIpIHsKKyAgICAgICAgcmV0
dXJuIGJlZm9yZSArIFN0cmluZygiICIpICsgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQubW9kdWxl
KSArICI6IiArIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSArICIgIiArIGFmdGVyOwor
ICAgIH07CisKICAgICAvLyBJZiB0aGUgbGlzdCBvZiBtb2R1bGUuaW1wb3J0cyBpcyBub3QgZW1w
dHkgYW5kIFR5cGUoaW1wb3J0T2JqZWN0KSBpcyBub3QgT2JqZWN0LCBhIFR5cGVFcnJvciBpcyB0
aHJvd24uCiAgICAgaWYgKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMuc2l6ZSgpICYmICFpbXBv
cnRPYmplY3QpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiY2FuJ3QgbWFrZSBXZWJBc3NlbWJseS5JbnN0YW5jZSBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGltcG9ydHMgT2JqZWN0IGFuZCB0aGUgV2ViQXNzZW1ibHkuTW9kdWxlIHJlcXVp
cmVzIGltcG9ydHMiKSkpOwpAQCAtMTYxLDE1ICsxNjUsMTUgQEAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgSlMKICAgICAvLyBGb3IgZWFjaCBpbXBvcnQgaSBpbiBtb2R1bGUuaW1wb3J0czoKICAgICBm
b3IgKGF1dG8mIGltcG9ydCA6IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMpIHsKICAgICAgICAg
Ly8gMS4gTGV0IG8gYmUgdGhlIHJlc3VsdGFudCB2YWx1ZSBvZiBwZXJmb3JtaW5nIEdldChpbXBv
cnRPYmplY3QsIGkubW9kdWxlX25hbWUpLgotICAgICAgICBKU1ZhbHVlIGltcG9ydE1vZHVsZVZh
bHVlID0gaW1wb3J0T2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
IGltcG9ydC5tb2R1bGUpKTsKKyAgICAgICAgSlNWYWx1ZSBpbXBvcnRNb2R1bGVWYWx1ZSA9IGlt
cG9ydE9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6
OmZyb21VVEY4KGltcG9ydC5tb2R1bGUpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgbnVsbHB0cik7CiAgICAgICAgIC8vIDIuIElmIFR5cGUobykgaXMgbm90IE9i
amVjdCwgdGhyb3cgYSBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghaW1wb3J0TW9kdWxlVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0IG11c3QgYmUgYW4gb2JqZWN0IiksIGRlZmF1bHRT
b3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZShpbXBvcnRNb2R1bGVWYWx1ZSkpKTsK
KyAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4ZWMsIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCIsICJtdXN0IGJlIGFuIG9iamVjdCIpLCBkZWZh
dWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0TW9kdWxlVmFsdWUp
KSk7CiAKICAgICAgICAgLy8gMy4gTGV0IHYgYmUgdGhlIHZhbHVlIG9mIHBlcmZvcm1pbmcgR2V0
KG8sIGkuaXRlbV9uYW1lKQogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2Jq
ZWN0Kj4oaW1wb3J0TW9kdWxlVmFsdWUpOwotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0
LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGltcG9ydC5maWVsZCkpOwor
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0LmZpZWxkKSkpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogCiAgICAgICAgIHN3aXRj
aCAoaW1wb3J0LmtpbmQpIHsKQEAgLTE3Nyw3ICsxODEsNyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKUwogICAgICAgICAgICAgLy8gNC4gSWYgaSBpcyBhIGZ1bmN0aW9uIGltcG9ydDoKICAgICAg
ICAgICAgIC8vIGkuIElmIElzQ2FsbGFibGUodikgaXMgZmFsc2UsIHRocm93IGEgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLgogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoImltcG9ydCBmdW5jdGlvbiBtdXN0IGJlIGNhbGxhYmxl
IikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCBm
dW5jdGlvbiIsICJtdXN0IGJlIGNhbGxhYmxlIikpKTsKIAogICAgICAgICAgICAgSlNPYmplY3Qq
IGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpOwogICAgICAgICAgICAgLy8gaWku
IElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9iamVjdDoKQEAgLTE5NSw3ICsx
OTksNyBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3Jl
YXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0g
bW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2ltcG9ydC5r
aW5kSW5kZXhdOwogICAgICAgICAgICAgICAgIGlmIChpbXBvcnRlZFNpZ25hdHVyZUluZGV4ICE9
IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNl
cHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFs
KCJpbXBvcnRlZCBmdW5jdGlvbidzIHNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRl
ZCBXZWJBc3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSIpKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZnVuY3Rpb24iLCAic2lnbmF0
dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2ln
bmF0dXJlIikpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIGlpaS4gT3RoZXJ3aXNl
OgogICAgICAgICAgICAgLy8gYS4gTGV0IGNsb3N1cmUgYmUgYSBuZXcgaG9zdCBmdW5jdGlvbiBv
ZiB0aGUgZ2l2ZW4gc2lnbmF0dXJlIHdoaWNoIGNhbGxzIHYgYnkgY29lcmNpbmcgV2ViQXNzZW1i
bHkgYXJndW1lbnRzIHRvIEphdmFTY3JpcHQgYXJndW1lbnRzIHZpYSBUb0pTVmFsdWUgYW5kIHJl
dHVybnMgdGhlIHJlc3VsdCwgaWYgYW55LCBieSBjb2VyY2luZyB2aWEgVG9XZWJBc3NlbWJseVZh
bHVlLgpAQCAtMjE1LDE5ICsyMTksMTkgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICAg
ICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNz
ZW1ibHlUYWJsZSo+KHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBh
IFdlYkFzc2VtYmx5LlRhYmxlIG9iamVjdCwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3Iu
CiAgICAgICAgICAgICBpZiAoIXRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJU
YWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIikpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIs
ICJpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuVGFibGUiKSkpOwogCiAgICAgICAg
ICAgICB1aW50MzJfdCBleHBlY3RlZEluaXRpYWwgPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJsZUlu
Zm9ybWF0aW9uLmluaXRpYWwoKTsKICAgICAgICAgICAgIHVpbnQzMl90IGFjdHVhbEluaXRpYWwg
PSB0YWJsZS0+c2l6ZSgpOwogICAgICAgICAgICAgaWYgKGFjdHVhbEluaXRpYWwgPCBleHBlY3Rl
ZEluaXRpYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBwcm92
aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpOworICAgICAgICAgICAgICAg
IHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwg
aW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiVGFibGUgaW1wb3J0IiwgInByb3ZpZGVkIGFuICdp
bml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSk7CiAKICAgICAgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBleHBlY3RlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1hdGlvbi50YWJs
ZUluZm9ybWF0aW9uLm1heGltdW0oKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGFjdHVhbE1heGltdW0gPSB0YWJsZS0+bWF4aW11bSgpOwogICAgICAgICAgICAg
ICAgIGlmICghYWN0dWFsTWF4aW11bSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwo
IlRhYmxlIGltcG9ydCBkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJl
cXVpcmVzIHRoYXQgaXQgZG9lcyIpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNl
cHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1l
c3NhZ2UoaW1wb3J0LCAiVGFibGUgaW1wb3J0IiwgImRvZXMgbm90IGhhdmUgYSAnbWF4aW11bScg
YnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIikpKTsKICAgICAgICAgICAgICAg
ICBpZiAoKmFjdHVhbE1heGltdW0gPiAqZXhwZWN0ZWRNYXhpbXVtKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywg
dm0sIEFTQ0lJTGl0ZXJhbCgiSW1wb3J0ZWQgVGFibGUncyAnbWF4aW11bScgaXMgbGFyZ2VyIHRo
YW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyIpKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiSW1wb3J0ZWQgVGFibGUiLCAiJ21heGltdW0n
IGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAnbWF4aW11bSciKSkpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBpaS4gQXBwZW5kIHYgdG8gdGFibGVzLgpAQCAt
MjQ0LDIwICsyNDgsMjAgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICAgICAgICAgIEpT
V2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1l
bW9yeSo+KHZtLCB2YWx1ZSk7CiAgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFz
c2VtYmx5Lk1lbW9yeSBvYmplY3QsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAg
ICAgICAgICAgaWYgKCFtZW1vcnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihj
cmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1lbW9y
eSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeSIpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vy
cm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJNZW1vcnkgaW1wb3J0Iiwg
ImlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKSkpOwogCiAgICAgICAg
ICAgICBXYXNtOjpQYWdlQ291bnQgZGVjbGFyZWRJbml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24u
bWVtb3J5LmluaXRpYWwoKTsKICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBpbXBvcnRlZElu
aXRpYWwgPSBtZW1vcnktPm1lbW9yeSgpLmluaXRpYWwoKTsKICAgICAgICAgICAgIGlmIChpbXBv
cnRlZEluaXRpYWwgPCBkZWNsYXJlZEluaXRpYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4
Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVy
YWwoIk1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0
aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplIikp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlM
aW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgIk1lbW9yeSBpbXBv
cnQiLCAicHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1
bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplIikpKTsKIAogICAgICAg
ICAgICAgaWYgKFdhc206OlBhZ2VDb3VudCBkZWNsYXJlZE1heGltdW0gPSBtb2R1bGVJbmZvcm1h
dGlvbi5tZW1vcnkubWF4aW11bSgpKSB7CiAgICAgICAgICAgICAgICAgV2FzbTo6UGFnZUNvdW50
IGltcG9ydGVkTWF4aW11bSA9IG1lbW9yeS0+bWVtb3J5KCkubWF4aW11bSgpOwogICAgICAgICAg
ICAgICAgIGlmICghaW1wb3J0ZWRNYXhpbXVtKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0
ZXJhbCgiTWVtb3J5IGltcG9ydCBkaWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1
bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIikpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRG
YWlsTWVzc2FnZShpbXBvcnQsICJNZW1vcnkgaW1wb3J0IiwgImRpZCBub3QgaGF2ZSBhICdtYXhp
bXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKGltcG9ydGVkTWF4aW11bSA+IGRlY2xhcmVkTWF4aW11bSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYSAnbWF4aW11
bScgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZGVjbGFyZWQgJ21heGltdW0nIGlt
cG9ydCBtZW1vcnkgc2l6ZSIpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3Nh
Z2UoaW1wb3J0LCAiTWVtb3J5IGltcG9ydCIsICJwcm92aWRlZCBhICdtYXhpbXVtJyB0aGF0IGlz
IGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnbWF4aW11bScgaW1wb3J0IG1lbW9y
eSBzaXplIikpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gaWkuIEFwcGVuZCB2
IHRvIG1lbW9yaWVzLgpAQCAtMjczLDkgKzI3Nyw5IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
CiAgICAgICAgICAgICBBU1NFUlQobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2lu
ZEluZGV4XS5tdXRhYmlsaXR5ID09IFdhc206Okdsb2JhbDo6SW1tdXRhYmxlKTsKICAgICAgICAg
ICAgIC8vIGlpLiBJZiB0aGUgZ2xvYmFsX3R5cGUgb2YgaSBpcyBpNjQgb3IgVHlwZSh2KSBpcyBu
b3QgTnVtYmVyLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAgICAgICAgIGlm
IChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUgPT0gV2Fz
bTo6STY0KQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJpbXBvcnRlZCBnbG9iYWwgY2Fu
bm90IGJlIGFuIGk2NCIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVh
dGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBv
cnQsICJpbXBvcnRlZCBnbG9iYWwiLCAiY2Fubm90IGJlIGFuIGk2NCIpKSk7CiAgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlv
bihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoImlt
cG9ydGVkIGdsb2JhbCBtdXN0IGJlIGEgbnVtYmVyIikpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgbnVtYmVy
IikpKTsKICAgICAgICAgICAgIC8vIGlpaS4gQXBwZW5kIFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0
byBpbXBvcnRzLgogICAgICAgICAgICAgQVNTRVJUKG51bUltcG9ydEdsb2JhbHMgPT0gaW1wb3J0
LmtpbmRJbmRleCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1vZHVsZUluZm9ybWF0aW9uLmdsb2Jh
bHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDM2NGI3
ODYuLjMxMDcxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2
bSwgY29uc3QgV2FzbQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZXhwIDog
bW9kdWxlSW5mb3JtYXRpb24uZXhwb3J0cykgewotICAgICAgICBJZGVudGlmaWVyIGZpZWxkID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIGV4cC5maWVsZCk7CisgICAgICAgIElkZW50aWZp
ZXIgZmllbGQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRGOChl
eHAuZmllbGQpKTsKICAgICAgICAgYWRkRXhwb3J0RW50cnkoRXhwb3J0RW50cnk6OmNyZWF0ZUxv
Y2FsKGZpZWxkLCBmaWVsZCkpOwogICAgIH0KIH0KQEAgLTk5LDggKzk5LDYgQEAgdm9pZCBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIG1vZHVsZSwKICAgICBTeW1ib2xUYWJsZSogZXhwb3J0U3ltYm9sVGFibGUgPSBtb2R1
bGUtPmV4cG9ydFN5bWJvbFRhYmxlKCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbXBvcnRDb3Vu
dCA9IGNvZGVCbG9jay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpOwogCi0gICAgLy8gRklYTUUgd2ly
ZSB1cCB0aGUgaW1wb3J0cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTExOAotCiAgICAgLy8gTGV0IGV4cG9ydHMgYmUgYSBsaXN0IG9mIChzdHJpbmcsIEpTIHZh
bHVlKSBwYWlycyB0aGF0IGlzIG1hcHBlZCBmcm9tIGVhY2ggZXh0ZXJuYWwgdmFsdWUgZSBpbiBp
bnN0YW5jZS5leHBvcnRzIGFzIGZvbGxvd3M6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9k
dWxlRW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgbnVsbHB0ciwgZXhwb3J0U3ltYm9sVGFibGUsIEpTVmFsdWUoKSwgdGhpcyk7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBleHAgOiBtb2R1bGVJbmZvcm1hdGlvbi5leHBvcnRzKSB7CkBAIC0x
NzksNyArMTc3LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3Rh
dGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgYm9vbCBzaG91
bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBmYWxzZTsKICAgICAgICAgYm9vbCBpZ25vcmVSZWFkT25s
eUVycm9ycyA9IHRydWU7CiAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7Ci0gICAgICAg
IHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBleGVj
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgZXhwLmZpZWxkKSwgZXhwb3J0ZWRWYWx1ZSwg
c2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0
KTsKKyAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxlRW52aXJv
bm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBTdHJpbmc6OmZyb21VVEY4
KGV4cC5maWVsZCkpLCBleHBvcnRlZFZhbHVlLCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGln
bm9yZVJlYWRPbmx5RXJyb3JzLCBwdXRSZXN1bHQpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChw
dXRSZXN1bHQpOwogICAgIH0KIAotLSAKMi4xMC4xCgo=
</data>
<flag name="review"
          id="333186"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="333187"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312275</attachid>
            <date>2017-06-07 21:04:34 -0700</date>
            <delta_ts>2017-06-07 21:43:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-test-imports-and-exports-with-16-bit-cha.patch</filename>
            <type>text/plain</type>
            <size>37188</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlOTE1MjhhMDE0Njk1ZjMyYjUzZjMxNDcxMGQzNDY0M2M2M2QxZDQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDcgSnVuIDIwMTcgMTc6MTE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogdGVzdCBpbXBvcnRzIGFuZCBleHBvcnRzIHdpdGggMTYtYml0IGNoYXJhY3RlcnMKCi0t
LQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz
NCArKysrKysrKwogLi4uL3dhc20vZnVuY3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jv
dy5qcyAgfCAgOCArLQogLi4uL2pzLWFwaS9JbnN0YW5jZS5pbXBvcnRzLmV4cG9ydHMudW5pY29k
ZS5qcyAgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBp
L2dsb2JhbC1lcnJvci5qcyAgICAgICAgICAgICAgICB8ICA0ICstCiBKU1Rlc3RzL3dhc20vanMt
YXBpL3RhYmxlLmpzICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogSlNUZXN0cy93YXNt
L2pzLWFwaS90ZXN0X21lbW9yeS5qcyAgICAgICAgICAgICAgICAgfCAxOCArKy0tCiBKU1Rlc3Rz
L3dhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0dXJlLmpzICB8ICA4ICstCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3dlYi1hc3NlbWJseS1pbnN0YW50aWF0ZS5qcyAgICB8ICA0ICstCiBK
U1Rlc3RzL3dhc20vanMtYXBpL3dyYXBwZXItZnVuY3Rpb24uanMgICAgICAgICAgICB8ICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDE3
ICsrKysKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgICAgICAgICAgICAg
IHwgMzQgKysrKy0tLS0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCAg
ICAgICAgICAgIHwgIDggKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA0
NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL0lu
c3RhbmNlLmltcG9ydHMuZXhwb3J0cy51bmljb2RlLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwZjE2MTYwLi5kNGVmODhhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDE3LTA2LTA3ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWJBc3NlbWJseTogdGVzdCBpbXBvcnRzIGFuZCBleHBvcnRzIHdpdGggMTYt
Yml0IGNoYXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTk3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk3NjAxMzA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgVGhlIG91dHB1dCBmb3IgaW1w
b3J0IGZhaWx1cmUgd2FzIGltcHJvdmVkLCBzbyBtYW55IHRlc3RzIG5lZWQgdG8KKyAgICAgICAg
YmUgdXBkYXRlZCBoZXJlLiBPbmx5IG9uZSBoYXMgbmV3IHRlc3RzIGFzIG5vdGVkIGJlbG93Lgor
CisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9tZW1vcnktaW1wb3J0LWFuZC1ncm93Lmpz
OgorICAgICAgICAqIHdhc20vanMtYXBpL0luc3RhbmNlLmltcG9ydHMuZXhwb3J0cy51bmljb2Rl
LmpzOiBBZGRlZC4gTWFpbiBuZXcgdGVzdC4KKyAgICAgICAgKGlkeE1vZHVsZSk6CisgICAgICAg
ICogd2FzbS9qcy1hcGkvZ2xvYmFsLWVycm9yLmpzOgorICAgICAgICAobmV3Lk51bWJlcik6Cisg
ICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90YWJsZS5qczoK
KyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAobmV3LldlYkFzc2VtYmx5LlRhYmxl
KToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qczoKKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAqIHdhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0dXJlLmpzOgor
ICAgICAgICAoQmFkU2lnbmF0dXJlRHJvcFN0YXJ0UGFyYW1zLik6CisgICAgICAgIChCYWRTaWdu
YXR1cmVEcm9wU3RhcnRQYXJhbXMpOgorICAgICAgICAoQmFkU2lnbmF0dXJlRHJvcEVuZFBhcmFt
cy4pOgorICAgICAgICAoQmFkU2lnbmF0dXJlU3dhcFBhcmFtLik6CisgICAgICAgIChCYWRTaWdu
YXR1cmVSZXQuKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS93ZWItYXNzZW1ibHktaW5zdGFudGlh
dGUuanM6CisgICAgICAgIChhc3NlcnQuYXN5bmNUZXN0LmFzeW5jLnRlc3QpOgorICAgICAgICAo
YXNzZXJ0LmFzeW5jVGVzdCk6CisgICAgICAgICogd2FzbS9qcy1hcGkvd3JhcHBlci1mdW5jdGlv
bi5qczoKKyAgICAgICAgKHJldHVybi5uZXcuV2ViQXNzZW1ibHkuTW9kdWxlKToKKwogMjAxNy0w
Ni0wNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgcm9sbG91dCByMjE3ODA3LiBDYXVzZWQgYSB0ZXN0IHRvIGNyYXNoLgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL21lbW9yeS1pbXBvcnQtYW5kLWdyb3cu
anMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jvdy5q
cwppbmRleCAzNGNlNTlkLi4xMzk4ZDkyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rp
b24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jvdy5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvbWVtb3J5LWltcG9ydC1hbmQtZ3Jvdy5qcwpAQCAtMTIxLDExICsxMjEsMTEg
QEAgdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDIgfSwgeyBpbml0aWFsOiAyLCBtYXhpbXVt
OiA0IH0sIHUsIDEsIDIpOwogdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDQgfSwgeyBpbml0
aWFsOiAyIH0sIDAsIHUsIDIpOwogCiAvLyBEaXNhbGxvd2VkOiBpbXBvcnRlZCBpbml0aWFsIGlz
IGxlc3NlciB0aGFuIGRlY2xhcmVkLgotYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KHsgaW5pdGlh
bDogMSwgbWF4aW11bTogNCB9LCB7IGluaXRpYWw6IDIsIG1heGltdW06IDQgfSwgdSwgdSwgMiks
IFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRp
YWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcg
aW1wb3J0IG1lbW9yeSBzaXplYCk7Ci1hc3NlcnQudGhyb3dzKCgpID0+IHRlc3QoeyBpbml0aWFs
OiAwLCBtYXhpbXVtOiA0IH0sIHsgaW5pdGlhbDogMiwgbWF4aW11bTogNCB9LCB1LCB1LCAyKSwg
V2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlh
bCcgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFsJyBp
bXBvcnQgbWVtb3J5IHNpemVgKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gdGVzdCh7IGluaXRpYWw6
IDEsIG1heGltdW06IDQgfSwgeyBpbml0aWFsOiAyLCBtYXhpbXVtOiA0IH0sIHUsIHUsIDIpLCBX
ZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgcHJvdmlkZWQg
YW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAn
aW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Cithc3NlcnQudGhyb3dzKCgpID0+IHRlc3Qo
eyBpbml0aWFsOiAwLCBtYXhpbXVtOiA0IH0sIHsgaW5pdGlhbDogMiwgbWF4aW11bTogNCB9LCB1
LCB1LCAyKSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpbXA6bWVtb3J5
IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUgbW9kdWxlJ3Mg
ZGVjbGFyZWQgJ2luaXRpYWwnIGltcG9ydCBtZW1vcnkgc2l6ZWApOwogCiAvLyBEaXNhbGxvd2Vk
OiBpbXBvcnRlZCBtYXhpbXVtIGlzIGdyZWF0ZXIgdGhhbiBkZWNsYXJlZC4KLWFzc2VydC50aHJv
d3MoKCkgPT4gdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDUgfSwgeyBpbml0aWFsOiAyLCBt
YXhpbXVtOiA0IH0sIHUsIHUsIDIpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1w
b3J0IHByb3ZpZGVkIGEgJ21heGltdW0nIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdz
IGRlY2xhcmVkICdtYXhpbXVtJyBpbXBvcnQgbWVtb3J5IHNpemVgKTsKK2Fzc2VydC50aHJvd3Mo
KCkgPT4gdGVzdCh7IGluaXRpYWw6IDIsIG1heGltdW06IDUgfSwgeyBpbml0aWFsOiAyLCBtYXhp
bXVtOiA0IH0sIHUsIHUsIDIpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0
IGltcDptZW1vcnkgcHJvdmlkZWQgYSAnbWF4aW11bScgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUg
bW9kdWxlJ3MgZGVjbGFyZWQgJ21heGltdW0nIGltcG9ydCBtZW1vcnkgc2l6ZWApOwogCiAvLyBE
aXNhbGxvd2VkOiBubyBpbXBvcnRlZCBtYXhpbXVtLCBzYW1lIGFzIGFib3ZlLgotYXNzZXJ0LnRo
cm93cygoKSA9PiB0ZXN0KHsgaW5pdGlhbDogMiB9LCB7IGluaXRpYWw6IDIsIG1heGltdW06IDQg
fSwgMCwgdSwgMiksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgZGlkIG5v
dCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lc2Ap
OworYXNzZXJ0LnRocm93cygoKSA9PiB0ZXN0KHsgaW5pdGlhbDogMiB9LCB7IGluaXRpYWw6IDIs
IG1heGltdW06IDQgfSwgMCwgdSwgMiksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBp
bXBvcnQgaW1wOm1lbW9yeSBkaWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUg
cmVxdWlyZXMgdGhhdCBpdCBkb2VzYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBp
L0luc3RhbmNlLmltcG9ydHMuZXhwb3J0cy51bmljb2RlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFw
aS9JbnN0YW5jZS5pbXBvcnRzLmV4cG9ydHMudW5pY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lODZjMjA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNt
L2pzLWFwaS9JbnN0YW5jZS5pbXBvcnRzLmV4cG9ydHMudW5pY29kZS5qcwpAQCAtMCwwICsxLDk2
IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKK2ltcG9ydCAqIGFzIGFz
c2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCisvLyBJbnRlcmVzdGluZyBVbmljb2RlIGNvcm5l
ciBjYXNlcy4KKworY29uc3QgbmFtZXMgPSBbCisgICAgIiIsIC8vIEVtcHR5IHN0cmluZy4KKyAg
ICAiXHUwMDAwIiwgLy8gTlVMCisgICAgIuKQgCIsIC8vIFNZTUJPTCBGT1IgTlVMCisgICAgIlx1
ZmVmZiIsIC8vIEJZVEUgT1JERVIgTUFSSworICAgICJcdWZmZmMiLCAvLyBPQkpFQ1QgUkVQTEFD
RU1FTlQgQ0hBUkFDVEVSCisgICAgIu+/vSIsIC8vIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiBpbiBj
YXNlIGFueXRoaW5nIGdldHMgc3Vic3RpdHV0ZWQgdGhpcyB3b3VsZCBiZSBhIGR1cGxpY2F0ZSwg
d2hpY2ggV2ViQXNzZW1ibHkgZGlzYWxsb3dzLgorICAgICJcdWZmZmUiLCAvLyBOT05DSEFSQUNU
RVItRkZGRQorICAgICJcdWZmZmYiLCAvLyBOT05DSEFSQUNURVItRkZGRgorICAgICJcdTIwMGUi
LCAvLyBMRUZULVRPLVJJR0hUIE1BUksKKyAgICAiXHUyMDBmIiwgLy8gUklHSFQtVE8tTEVGVCBN
QVJLCisgICAgIlx1MjAyYSIsIC8vIExFRlQtVE8tUklHSFQgRU1CRURESU5HCisgICAgIlx1MjAy
YiIsIC8vIFJJR0hULVRPLUxFRlQgRU1CRURESU5HCisgICAgIlx1MjAyZCIsIC8vIExFRlQtVE8t
UklHSFQgT1ZFUlJJREUKKyAgICAiXHUyMDJlIiwgLy8gUklHSFQtVE8tTEVGVCBPVkVSUklERQor
ICAgICJcdTIwMmMiLCAvLyBQT1AgRElSRUNUSU9OQUwgRk9STUFUVElORworICAgICLwn4eo8J+H
piIsIC8vIFJFR0lPTkFMIElORElDQVRPUiBTWU1CT0wgTEVUVEVSIEMgKyBSRUdJT05BTCBJTkRJ
Q0FUT1IgU1lNQk9MIExFVFRFUiBBCisgICAgIvCfiLkiLCAvLyBQTEFZSU5HIENBUkQgQkxBQ0sg
Sk9LRVIKKyAgICAi8J+RqOKAjeKdpO+4j+KAjfCfkovigI3wn5GoIiwgLy8gQ29tYmluZSBhIGJ1
bmNoIG9mIGVtb2ppCisKKyAgICAvLyBEdXBsaWNhdGUgZW50cmllcyBhcmUgaW52YWxpZCwgc28g
bm9ybWFsaXphdGlvbiB3b3VsZCBjYXVzZSBpc3N1ZXMuIFdlIHdhbnQgdG8gY2F0Y2ggdGhvc2Ug
aXNzdWVzLgorICAgICLtlZzquIAiLAorICAgICLhhJLhhaHhhqvhhIDhhbPhhq8iLCAvLyBOb3Jt
YWxpemVkIHZlcnNpb24gb2YgdGhlIGFib3ZlLgorICAgICLDhSIsIC8vIExBVElOIENBUElUQUwg
TEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgIuKEqyIsIC8vIEFOR1NUUk9NIFNJR04KKyAg
ICAiQcyKIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSArIENPTUJJTklORyBSSU5HIEFCT1ZF
CisgICAgIkHMgCIsIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgKyBDT01CSU5JTkcgR1JBVkUg
QUNDRU5UCisgICAgIsOAIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCisg
ICAgIuG6pcyoIiwgLy8gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBB
Q1VURSArIENPTUJJTklORyBPR09ORUsKKyAgICAixIXMgsyBIiwgLy8gTEFUSU4gU01BTEwgTEVU
VEVSIEEgV0lUSCBPR09ORUsgKyBDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgKyBDT01CSU5J
TkcgQUNVVEUgQUNDRU5UCisgICAgIlHMgMyjIiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUSAr
IENPTUJJTklORyBHUkFWRSBBQ0NFTlQgKyBDT01CSU5JTkcgRE9UIEJFTE9XCisgICAgIlHMo8yA
IiwgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgKyBDT01CSU5JTkcgRE9UIEJFTE9XICsgQ09NQklO
SU5HIEdSQVZFIEFDQ0VOVAorCisgICAgLy8gQ29tYmluZSB3YXkgdG9vIG1hbnkgdGhpbmdzOgor
CisKKworICAgICJKzILNr8yBzILNhs2DzILMkc2lzafNpM2LzJTNpcyozJvMuM2ZzJnMscyvzLrM
ls2UzY7Mo82TzKzNic2TzZnNlM2IzKXMls2OYcyAzYLNq8yFzabNpsyIzITMicyFzL7Misy9zZHM
ms2szJvMt82gzZ/MpMy7zKbNk82TzJbMqsyfzZN2zYbMv82pzZfNqcyAzafNgs2GzL7Mgc2RzabN
rcy9zabMoc2YzYDNmc2VzJ/NjsywYc2Mza7Nl8yazYTNisyKzJHMicyVzKfMu82WzZPMl8y7zKlT
zarNp8yBzZLMlMy/zIjNq82lzIfNpsyPzZDMg82tzIHNrc2izKHNnc2WzLHNiM2azYnMqcy6zY5j
zavMvc2kzJPMisyHzYbMgM2rzYLMks2QzazMh8yazYLMic2SzavMp82ezZjMp82OzK7MpM2FzJnM
l8y7zK/NlsyuzJnMsMyecsyHzYPNm8yFzJHMicyPzYLNo8yBzI/Ni8yBzYPMmsy3zZPNhcy5zYjM
rsyqzZTNk8yracyPzJrNqs2pzI3Mvc2jzIrNrs2ezY/MtM2AzLXMr8y5zKDNls2IzKDNjsymcMyP
zI/Nr82QzafNi8yKzIPMiMyIzaLNgc2ZzJ3Ml8ylzLvMr8ywzZrMq3TNg8yQzavMgMyLzYPNncy3
zY3Njsy7zKnMoMyszJnMpsywzZPMqcyXzJ3MscyjIiwKKworCisKKworXTsKKworLy8gV2ViQXNz
ZW1ibHkgaW1wb3J0IG9iamVjdHMgaGF2ZSBhIHR3by1sZXZlbCBuYW1lc3BhY2Ugd2l0aCBtb2R1
bGUgYW5kIGZpZWxkLiBCb3RoIG11c3QgYmUgVVRGLTguCitsZXQgaW1wb3J0T2JqZWN0ID0ge307
Citmb3IgKGxldCBpZHhNb2R1bGUgPSAwOyBpZHhNb2R1bGUgPCBuYW1lcy5sZW5ndGg7ICsraWR4
TW9kdWxlKSB7CisgICAgYXNzZXJ0LmZhbHN5KGltcG9ydE9iamVjdC5oYXNPd25Qcm9wZXJ0eShu
YW1lc1tpZHhNb2R1bGVdKSk7CisgICAgaW1wb3J0T2JqZWN0W25hbWVzW2lkeE1vZHVsZV1dID0g
e307CisgICAgZm9yIChsZXQgaWR4RmllbGQgPSAwOyBpZHhGaWVsZCA8IG5hbWVzLmxlbmd0aDsg
KytpZHhGaWVsZCkgeworICAgICAgICBhc3NlcnQuZmFsc3koaW1wb3J0T2JqZWN0W25hbWVzW2lk
eE1vZHVsZV1dLmhhc093blByb3BlcnR5KG5hbWVzW2lkeEZpZWxkXSkpOworICAgICAgICBpbXBv
cnRPYmplY3RbbmFtZXNbaWR4TW9kdWxlXV1bbmFtZXNbaWR4RmllbGRdXSA9ICgpID0+IDEwMDAw
ICogaWR4TW9kdWxlICsgaWR4RmllbGQ7CisgICAgfQorfQorCitsZXQgYiA9IChuZXcgQnVpbGRl
cigpKQorICAgIC5UeXBlKCkuRW5kKCk7CisKK2IgPSBiLkltcG9ydCgpOworZm9yIChsZXQgaWR4
TW9kdWxlID0gMDsgaWR4TW9kdWxlIDwgbmFtZXMubGVuZ3RoOyArK2lkeE1vZHVsZSkKKyAgICBm
b3IgKGxldCBpZHhGaWVsZCA9IDA7IGlkeEZpZWxkIDwgbmFtZXMubGVuZ3RoOyArK2lkeEZpZWxk
KQorICAgICAgICBiID0gYi5GdW5jdGlvbihuYW1lc1tpZHhNb2R1bGVdLCBuYW1lc1tpZHhGaWVs
ZF0sIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KTsKK2IgPSBiLkVuZCgpOworCitiID0gYi5G
dW5jdGlvbigpLkVuZCgpOworCitiID0gYi5FeHBvcnQoKTsKK2ZvciAobGV0IGlkeCA9IDA7IGlk
eCA8IG5hbWVzLmxlbmd0aDsgKytpZHgpCisgICAgYiA9IGIuRnVuY3Rpb24obmFtZXNbaWR4XSk7
CitiID0gYi5FbmQoKTsKKworYiA9IGIuQ29kZSgpOworZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwg
bmFtZXMubGVuZ3RoOyArK2lkeCkKKyAgICBiID0gYi5GdW5jdGlvbihuYW1lc1tpZHhdLCB7IHBh
cmFtczogW10sIHJldDogImkzMiIgfSkuSTMyQ29uc3QoaWR4KS5SZXR1cm4oKS5FbmQoKTsKK2Ig
PSBiLkVuZCgpOworCitjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGIuV2Vi
QXNzZW1ibHkoKS5nZXQoKSk7CisKK2ZvciAobGV0IGlkeE1vZHVsZSA9IDA7IGlkeE1vZHVsZSA8
IG5hbWVzLmxlbmd0aDsgKytpZHhNb2R1bGUpICAgCisgICAgZm9yIChsZXQgaWR4RmllbGQgPSAw
OyBpZHhGaWVsZCA8IG5hbWVzLmxlbmd0aDsgKytpZHhGaWVsZCkgeworICAgICAgICBhc3NlcnQu
ZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMobW9kdWxlKVtpZHhNb2R1bGUgKiBuYW1lcy5s
ZW5ndGggKyBpZHhGaWVsZF0ubW9kdWxlLCBuYW1lc1tpZHhNb2R1bGVdKTsKKyAgICAgICAgYXNz
ZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG1vZHVsZSlbaWR4TW9kdWxlICogbmFt
ZXMubGVuZ3RoICsgaWR4RmllbGRdLm5hbWUsIG5hbWVzW2lkeEZpZWxkXSk7CisgICAgfQorCitm
b3IgKGxldCBpZHggPSAwOyBpZHggPCBuYW1lcy5sZW5ndGg7ICsraWR4KQorICAgIGFzc2VydC5l
cShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyhtb2R1bGUpW2lkeF0ubmFtZSwgbmFtZXNbaWR4
XSk7CisKK2NvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
aW1wb3J0T2JqZWN0KTsKKworZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgbmFtZXMubGVuZ3RoOyAr
K2lkeCkKKyAgICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0c1tuYW1lc1tpZHhdXSgpLCBpZHgp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9nbG9iYWwtZXJyb3IuanMgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL2dsb2JhbC1lcnJvci5qcwppbmRleCBhZWU3NTM1Li4wOWY4ZDc5IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL2dsb2JhbC1lcnJvci5qcworKysgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL2dsb2JhbC1lcnJvci5qcwpAQCAtMTg1LDcgKzE4NSw3IEBAIGZvciAo
IGxldCBpbXAgb2YgW3VuZGVmaW5lZCwgbnVsbCwge30sICgpID0+IHt9LCAibnVtYmVyIiwgbmV3
IE51bWJlcig0KV0pIHsKICAgICBiaW4udHJpbSgpOwogCiAgICAgY29uc3QgbW9kdWxlID0gbmV3
IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4uZ2V0KCkpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiBpbXAgfSB9
KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCAiaW1wb3J0ZWQgZ2xvYmFsIG11c3QgYmUgYSBudW1i
ZXIgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7
IGdsb2JhbDogaW1wIH0gfSknKSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiBpbXAgfSB9KSwgV2ViQXNz
ZW1ibHkuTGlua0Vycm9yLCAiaW1wb3J0ZWQgZ2xvYmFsIGltcDpnbG9iYWwgbXVzdCBiZSBhIG51
bWJlciAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6
IHsgZ2xvYmFsOiBpbXAgfSB9KScpIik7CiB9CiAKIHsKQEAgLTIwOCw1ICsyMDgsNSBAQCBmb3Ig
KCBsZXQgaW1wIG9mIFt1bmRlZmluZWQsIG51bGwsIHt9LCAoKSA9PiB7fSwgIm51bWJlciIsIG5l
dyBOdW1iZXIoNCldKSB7CiAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCiAgICAgICAgIC5HbG9i
YWwoKS5HZXRHbG9iYWwoImk2NCIsIDAsICJpbW11dGFibGUiKS5FbmQoKTsKICAgICBjb25zdCBt
b2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQo
KSk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlLCB7IGltcDogeyBnbG9iYWw6IHVuZGVmaW5lZCB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJy
b3IsICJpbXBvcnRlZCBnbG9iYWwgY2Fubm90IGJlIGFuIGk2NCAoZXZhbHVhdGluZyAnbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiB1bmRlZmluZWQgfSB9
KScpIik7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7IGltcDogeyBnbG9iYWw6IHVuZGVmaW5lZCB9IH0pLCBXZWJBc3NlbWJseS5MaW5r
RXJyb3IsICJpbXBvcnRlZCBnbG9iYWwgaW1wOmdsb2JhbCBjYW5ub3QgYmUgYW4gaTY0IChldmFs
dWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBnbG9iYWw6
IHVuZGVmaW5lZCB9IH0pJykiKTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGFibGUuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCmluZGV4IGQ1NWEzNTAuLjM5
MTg1OGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMKKysrIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcwpAQCAtMTkzLDEwICsxOTMsMTAgQEAgZnVuY3Rpb24g
YXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVEZXNjcmlwdGlvbiwgbWVzc2FnZSkgewogICAgIH0K
IAogICAgIGNvbnN0IGJhZFRhYmxlcyA9IFsKLSAgICAgICAgW3tpbml0aWFsOiAxMDAsIG1heGlt
dW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlh
bDoxMDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IGRvZXMgbm90IGhhdmUg
YSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIChldmFsdWF0
aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7dGFibGV9fSknKSJd
LAotICAgICAgICBbe2luaXRpYWw6IDEwMCwgbWF4aW11bToxMDAsIGVsZW1lbnQ6ImFueWZ1bmMi
fSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEwMCwgbWF4aW11bToxMDEsIGVsZW1l
bnQ6ICJhbnlmdW5jIn0pLCAiSW1wb3J0ZWQgVGFibGUncyAnbWF4aW11bScgaXMgbGFyZ2VyIHRo
YW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pJykiXSwKLSAgICAgICAgW3tp
bml0aWFsOiAxMDAsIGVsZW1lbnQ6ImFueWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtp
bml0aWFsOjEwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwgIlRhYmxlIGltcG9ydCBwcm92aWRlZCBh
biAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KScpIl0sCi0gICAgICAgIFt7aW5pdGlh
bDogMTAsIGVsZW1lbnQ6ImFueWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFs
OjksIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0
aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMDAs
IG1heGltdW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7
aW5pdGlhbDoxMDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IGltcDp0YWJs
ZSBkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQg
aXQgZG9lcyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2lt
cDoge3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMDAsIG1heGltdW06MTAwLCBl
bGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxMDAsIG1h
eGltdW06MTAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwgIkltcG9ydGVkIFRhYmxlIGltcDp0YWJs
ZSAnbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVt
JyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3Rh
YmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMDAsIGVsZW1lbnQ6ImFueWZ1bmMifSwg
bmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwg
IlRhYmxlIGltcG9ydCBpbXA6dGFibGUgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9v
IHNtYWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1w
OiB7dGFibGV9fSknKSJdLAorICAgICAgICBbe2luaXRpYWw6IDEwLCBlbGVtZW50OiJhbnlmdW5j
In0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDo5LCBlbGVtZW50OiAiYW55ZnVuYyJ9
KSwgIlRhYmxlIGltcG9ydCBpbXA6dGFibGUgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMg
dG9vIHNtYWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
aW1wOiB7dGFibGV9fSknKSJdLAogICAgIF07CiAgICAgZm9yIChjb25zdCBbZCwgdCwgbV0gb2Yg
YmFkVGFibGVzKSB7CiAgICAgICAgIGFzc2VydEJhZFRhYmxlSW5zdGFuY2UoZCwgdCwgbSk7CkBA
IC0yNTEsNyArMjUxLDcgQEAgZnVuY3Rpb24gYXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVEZXNj
cmlwdGlvbiwgbWVzc2FnZSkgewogICAgICAgICAgICAgLkNvZGUoKQogICAgICAgICAgICAgLkVu
ZCgpOwogICAgICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxk
ZXIuV2ViQXNzZW1ibHkoKS5nZXQoKSk7Ci0gICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pLCBXZWJBc3NlbWJs
eS5MaW5rRXJyb3IsICJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2Vt
Ymx5LlRhYmxlIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
aW1wOiB7dGFibGV9fSknKSIpOworICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KSwgV2ViQXNzZW1ibHkuTGlu
a0Vycm9yLCAiVGFibGUgaW1wb3J0IGltcDp0YWJsZSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2Vi
QXNzZW1ibHkuVGFibGUgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUsIHtpbXA6IHt0YWJsZX19KScpIik7CiAgICAgfQogICAgIGFzc2VydEJhZFRhYmxlKDI1KTsK
ICAgICBhc3NlcnRCYWRUYWJsZShuZXcgT2JqZWN0KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9qcy1hcGkvdGVzdF9tZW1vcnkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5
LmpzCmluZGV4IGU2ZDY4YzIuLjUyMDU5OTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9tZW1vcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5q
cwpAQCAtMzE4LDEzICszMTgsMTMgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBtb2R1
bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CiAKICAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIDIwKSwgVHlwZUVycm9yLCBgc2Vj
b25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lkluc3RhbmNlIG11c3QgYmUgdW5kZWZpbmVkIG9y
IGFuIE9iamVjdGApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwge30pLCBUeXBlRXJyb3IsIGBpbXBvcnQgbXVzdCBiZSBhbiBvYmplY3Rg
KTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUsIHtpbXA6IHsgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBp
cyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7Ci0gICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9y
eTogMjAgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpcyBub3Qg
YW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7Ci0gICAgYXNzZXJ0LnRocm93cygo
KSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogW10g
fSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpcyBub3QgYW4gaW5z
dGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMTksIG1heGltdW06IDI1fSkgfSB9KSwgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBp
cyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFsJyBpbXBvcnQgbWVt
b3J5IHNpemVgKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0
aWFsOiAyMH0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgZGlk
IG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9l
c2ApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1v
ZHVsZSwge2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIw
LCBtYXhpbXVtOiAyNn0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBv
cnQgcHJvdmlkZWQgYSAnbWF4aW11bScgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3Mg
ZGVjbGFyZWQgJ21heGltdW0nIGltcG9ydCBtZW1vcnkgc2l6ZWApOworICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge30pLCBUeXBlRXJyb3Is
IGBpbXBvcnQgaW1wOm1lbW9yeSBtdXN0IGJlIGFuIG9iamVjdGApOworICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyB9IH0pLCBX
ZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgaXMgbm90IGFu
IGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeWApOworICAgIGFzc2VydC50aHJvd3MoKCkg
PT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IDIwIH0g
fSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaW1wOm1lbW9yeSBpcyBu
b3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5YCk7CisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTog
W10gfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpbXA6bWVtb3J5
IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnlgKTsKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVt
b3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOSwgbWF4aW11bTogMjV9KSB9
IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgcHJv
dmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNs
YXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7CisgICAgYXNzZXJ0LnRocm93cygo
KSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3
IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMjB9KSB9IH0pLCBXZWJBc3NlbWJseS5MaW5r
RXJyb3IsIGBNZW1vcnkgaW1wb3J0IGltcDptZW1vcnkgZGlkIG5vdCBoYXZlIGEgJ21heGltdW0n
IGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lc2ApOworICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6
IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIwLCBtYXhpbXVtOiAyNn0pIH0gfSks
IFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaW1wOm1lbW9yeSBwcm92aWRl
ZCBhICdtYXhpbXVtJyB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAn
bWF4aW11bScgaW1wb3J0IG1lbW9yeSBzaXplYCk7CiB9KTsKIAogdGVzdChmdW5jdGlvbigpIHsK
QEAgLTM1NCw4ICszNTQsOCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnQudGhy
b3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGluc3RhbmNlT2JqKSwg
V2ViQXNzZW1ibHkuTGlua0Vycm9yLCBleHBlY3RlZEVycm9yKTsKICAgICB9CiAKLSAgICB0ZXN0
TWVtSW1wb3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2lu
aXRpYWw6IDE5LCBtYXhpbXVtOiAyNX0pIH0gfSwgYE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4g
J2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5p
dGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Ci0gICAgdGVzdE1lbUltcG9ydEVycm9yKHtpbXA6
IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOX0pIH0gfSwgYE1l
bW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRo
ZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7CisgICAg
dGVzdE1lbUltcG9ydEVycm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5
KHtpbml0aWFsOiAxOSwgbWF4aW11bTogMjV9KSB9IH0sIGBNZW1vcnkgaW1wb3J0IGltcDptZW1v
cnkgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBtb2R1bGUn
cyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7CisgICAgdGVzdE1lbUlt
cG9ydEVycm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFs
OiAxOX0pIH0gfSwgYE1lbW9yeSBpbXBvcnQgaW1wOm1lbW9yeSBwcm92aWRlZCBhbiAnaW5pdGlh
bCcgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFsJyBp
bXBvcnQgbWVtb3J5IHNpemVgKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0aHJvdy4KICAg
ICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7bWVtb3J5OiBuZXcgV2Vi
QXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjIwfSl9fSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0dXJlLmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS93YXNtLXRvLXdhc20tYmFkLXNpZ25hdHVyZS5qcwppbmRleCBkNjliYTJjLi4xNjk0MTFi
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3dhc20tdG8td2FzbS1iYWQtc2lnbmF0
dXJlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvd2FzbS10by13YXNtLWJhZC1zaWduYXR1
cmUuanMKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgbWFrZUltcG9ydGVlID0gc2lnbmF0dXJlID0+
IHsKICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gc2lnbmF0dXJlLnBhcmFtcy5sZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgY29uc3QgYmFkUGFyYW1TaWduYXR1cmUgPSB7IHBhcmFtczog
c2lnbmF0dXJlLnBhcmFtcy5zbGljZShpLCBzaWduYXR1cmUucGFyYW1zLmxlbmd0aCksIHJldDog
c2lnbmF0dXJlLnJldCB9OwogICAgICAgICAgICAgY29uc3QgaW1wb3J0ZXIgPSBtYWtlSW1wb3J0
ZXIoYmFkUGFyYW1TaWduYXR1cmUpOwotICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwgV2ViQXNzZW1ibHku
TGlua0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0
aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRpbmcg
J25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKKyAgICAg
ICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGltcG9y
dGVyLCBpbXBvcnRlZSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYGltcG9ydGVkIGZ1bmN0aW9u
IGV4cG9ydHM6JHtpbXBvcnROYW1lfSBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlk
ZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRpbmcgJ25ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKICAgICAgICAgfQogICAg
IH0KIH0pKCk7CkBAIC03Myw3ICs3Myw3IEBAIGNvbnN0IG1ha2VJbXBvcnRlZSA9IHNpZ25hdHVy
ZSA9PiB7CiAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc2lnbmF0dXJlLnBhcmFtcy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgY29uc3QgYmFkUGFyYW1TaWduYXR1cmUgPSB7IHBhcmFt
czogc2lnbmF0dXJlLnBhcmFtcy5zbGljZSgwLCBpKSwgcmV0OiBzaWduYXR1cmUucmV0IH07CiAg
ICAgICAgICAgICBjb25zdCBpbXBvcnRlciA9IG1ha2VJbXBvcnRlcihiYWRQYXJhbVNpZ25hdHVy
ZSk7Ci0gICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBpbXBvcnRl
ZCBmdW5jdGlvbidzIHNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3Nl
bWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKGltcG9ydGVyLCBpbXBvcnRlZSknKWApOworICAgICAgICAgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwgV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24gZXhwb3J0czoke2ltcG9ydE5h
bWV9IHNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5j
dGlvbidzIHNpZ25hdHVyZSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGlt
cG9ydGVyLCBpbXBvcnRlZSknKWApOwogICAgICAgICB9CiAgICAgfQogfSkoKTsKQEAgLTg3LDcg
Kzg3LDcgQEAgY29uc3QgbWFrZUltcG9ydGVlID0gc2lnbmF0dXJlID0+IHsKICAgICAgICAgICAg
ICAgICBiYWRQYXJhbXNbc2lnbmF0dXJlSW5kZXhdID0gc3dhcFR5cGVOb25Wb2lkKGJhZFBhcmFt
c1tzaWduYXR1cmVJbmRleF0sIHR5cGVJbmRleCk7CiAgICAgICAgICAgICAgICAgY29uc3QgYmFk
UGFyYW1TaWduYXR1cmUgPSB7IHBhcmFtczogYmFkUGFyYW1zLCByZXQ6IHNpZ25hdHVyZS5yZXQg
fTsKICAgICAgICAgICAgICAgICBjb25zdCBpbXBvcnRlciA9IG1ha2VJbXBvcnRlcihiYWRQYXJh
bVNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwgV2ViQXNzZW1ibHkuTGlua0Vy
cm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJv
dmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRpbmcgJ25ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRl
ciwgaW1wb3J0ZWUpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBpbXBvcnRlZCBmdW5jdGlvbiBl
eHBvcnRzOiR7aW1wb3J0TmFtZX0gc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVk
IFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIChldmFsdWF0aW5nICduZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKScpYCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC05OSw3ICs5OSw3IEBAIGNvbnN0IG1ha2VJbXBvcnRlZSA9IHNp
Z25hdHVyZSA9PiB7CiAgICAgICAgIGZvciAobGV0IHR5cGVJbmRleCA9IDE7IHR5cGVJbmRleCA8
IHR5cGVzLmxlbmd0aDsgKyt0eXBlSW5kZXgpIHsKICAgICAgICAgICAgIGNvbnN0IGJhZFBhcmFt
U2lnbmF0dXJlID0geyBwYXJhbXM6IHNpZ25hdHVyZS5wYXJhbXMsIHJldDogc3dhcFR5cGUoc2ln
bmF0dXJlLnJldCwgdHlwZUluZGV4KSB9OwogICAgICAgICAgICAgY29uc3QgaW1wb3J0ZXIgPSBt
YWtlSW1wb3J0ZXIoYmFkUGFyYW1TaWduYXR1cmUpOwotICAgICAgICAgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaW1wb3J0ZXIsIGltcG9ydGVlKSwgV2Vi
QXNzZW1ibHkuTGlua0Vycm9yLCBgaW1wb3J0ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9lc24n
dCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2
YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylg
KTsKKyAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKGltcG9ydGVyLCBpbXBvcnRlZSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYGltcG9ydGVk
IGZ1bmN0aW9uIGV4cG9ydHM6JHtpbXBvcnROYW1lfSBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0
aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUgKGV2YWx1YXRpbmcg
J25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpbXBvcnRlciwgaW1wb3J0ZWUpJylgKTsKICAgICAg
ICAgfQogICAgIH0KIH0pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3dlYi1h
c3NlbWJseS1pbnN0YW50aWF0ZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5
LWluc3RhbnRpYXRlLmpzCmluZGV4IGViM2U5OWIuLmY2MDY3MjUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvd2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5LWluc3RhbnRpYXRlLmpzCisrKyBiL0pTVGVzdHMv
d2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5LWluc3RhbnRpYXRlLmpzCkBAIC0xMDMsNyArMTAzLDcg
QEAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlLmxlbmd0aCwgMSk7CiAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICBsZXQge21vZHVsZSwgaW5zdGFuY2V9ID0gYXdhaXQgV2ViQXNz
ZW1ibHkuaW5zdGFudGlhdGUoYmluLCB7aW1wOiB7bWVtb3J5OiAyMH19KTsKICAgICAgICAgfSBj
YXRjaChlKSB7Ci0gICAgICAgICAgICBhc3NlcnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9y
dCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5Iik7CisgICAgICAgICAg
ICBhc3NlcnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9ydCBpbXA6bWVtb3J5IGlzIG5vdCBh
biBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTMxLDcgKzEzMSw3IEBAIGFzc2VydC5lcShXZWJBc3NlbWJseS5pbnN0YW50aWF0ZS5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZShiaW4pOwogICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5z
dGFudGlhdGUoYmluLCB7aW1wOiB7bWVtb3J5OiAyMH19KTsKICAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICBhc3NlcnQuZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9ydCBpcyBub3Qg
YW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5Iik7CisgICAgICAgICAgICBhc3NlcnQu
ZXEoZS5tZXNzYWdlLCAiTWVtb3J5IGltcG9ydCBpbXA6bWVtb3J5IGlzIG5vdCBhbiBpbnN0YW5j
ZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS93cmFwcGVyLWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy93YXNt
L2pzLWFwaS93cmFwcGVyLWZ1bmN0aW9uLmpzCmluZGV4IDcxYTUwZWUuLjQ2Mjk0ZTcgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvd3JhcHBlci1mdW5jdGlvbi5qcworKysgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL3dyYXBwZXItZnVuY3Rpb24uanMKQEAgLTQ1LDcgKzQ1LDcgQEAgZnVu
Y3Rpb24gZXhwb3J0SW1wb3J0KHR5cGUpIHsKICAgICAgICAgICAgIC5Db2RlKCkuRW5kKCk7CiAg
ICAgICAgIGxldCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2ViQXNz
ZW1ibHkoKS5nZXQoKSk7CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0eXBlIGNoZWNrLgot
ICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUsIHtpbXA6IHtmOiBpbnN0YW5jZS5leHBvcnRzLmZ1bmN9fSksIFdlYkFzc2VtYmx5LkxpbmtF
cnJvciwgImltcG9ydGVkIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHBy
b3ZpZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIik7CisgICAgICAgIGFzc2Vy
dC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge2Y6
IGluc3RhbmNlLmV4cG9ydHMuZnVuY319KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCAiaW1wb3J0
ZWQgZnVuY3Rpb24gaW1wOmYgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIFdl
YkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIik7CiAgICAgfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCBiMjY2YTU3Li5kMzFmYmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wNi0wNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IHRlc3QgaW1wb3J0cyBhbmQgZXhwb3J0
cyB3aXRoIDE2LWJpdCBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjU5NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5NzYwMTMw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIEFkZCB0aGUg
bWlzc2luZyBVVEYtOCBjb252ZXJzaW9ucy4gSW1wcm92ZSBpbXBvcnQgZmFpbHVyZSBlcnJvcgor
ICAgICAgICBtZXNzYWdlcywgb3RoZXJ3aXNlIGl0J3MgaGFyZCB0byBmaWd1cmUgb3V0IHdoaWNo
IGltcG9ydCBpcyB3cm9uZy4KKworICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisKIDIwMTctMDYtMDYgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgT01HIHRpZXIgdXAg
Y2hlY2tzIHNob3VsZCBiZSBhIHBhdGNocG9pbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDM2MTBkYjMu
LjM1YTViM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMTM3LDYgKzEzNywxMCBAQCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9OwogCisgICAgYXV0
byBpbXBvcnRGYWlsTWVzc2FnZSA9IFsmXSAoY29uc3QgV2FzbTo6SW1wb3J0JiBpbXBvcnQsIGNv
bnN0IGNoYXIqIGJlZm9yZSwgY29uc3QgY2hhciogYWZ0ZXIpIHsKKyAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoYmVmb3JlLCAiICIsIFN0cmluZzo6ZnJvbVVURjgoaW1wb3J0Lm1vZHVsZSksICI6
IiwgU3RyaW5nOjpmcm9tVVRGOChpbXBvcnQuZmllbGQpLCAiICIsIGFmdGVyKTsKKyAgICB9Owor
CiAgICAgLy8gSWYgdGhlIGxpc3Qgb2YgbW9kdWxlLmltcG9ydHMgaXMgbm90IGVtcHR5IGFuZCBU
eXBlKGltcG9ydE9iamVjdCkgaXMgbm90IE9iamVjdCwgYSBUeXBlRXJyb3IgaXMgdGhyb3duLgog
ICAgIGlmIChtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0
KQogICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoImNhbid0IG1ha2UgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYmVjYXVzZSB0aGVyZSBpcyBu
byBpbXBvcnRzIE9iamVjdCBhbmQgdGhlIFdlYkFzc2VtYmx5Lk1vZHVsZSByZXF1aXJlcyBpbXBv
cnRzIikpKTsKQEAgLTE2MSwxNSArMTY1LDE1IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAg
ICAgLy8gRm9yIGVhY2ggaW1wb3J0IGkgaW4gbW9kdWxlLmltcG9ydHM6CiAgICAgZm9yIChhdXRv
JiBpbXBvcnQgOiBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzKSB7CiAgICAgICAgIC8vIDEuIExl
dCBvIGJlIHRoZSByZXN1bHRhbnQgdmFsdWUgb2YgcGVyZm9ybWluZyBHZXQoaW1wb3J0T2JqZWN0
LCBpLm1vZHVsZV9uYW1lKS4KLSAgICAgICAgSlNWYWx1ZSBpbXBvcnRNb2R1bGVWYWx1ZSA9IGlt
cG9ydE9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBpbXBvcnQu
bW9kdWxlKSk7CisgICAgICAgIEpTVmFsdWUgaW1wb3J0TW9kdWxlVmFsdWUgPSBpbXBvcnRPYmpl
Y3QtPmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRG
OChpbXBvcnQubW9kdWxlKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIG51bGxwdHIpOwogICAgICAgICAvLyAyLiBJZiBUeXBlKG8pIGlzIG5vdCBPYmplY3QsIHRo
cm93IGEgVHlwZUVycm9yLgogICAgICAgICBpZiAoIWltcG9ydE1vZHVsZVZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoImltcG9ydCBtdXN0IGJlIGFuIG9iamVjdCIpLCBkZWZhdWx0U291cmNlQXBw
ZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0TW9kdWxlVmFsdWUpKSk7CisgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnQiLCAibXVzdCBiZSBhbiBvYmplY3QiKSwgZGVmYXVsdFNvdXJj
ZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydE1vZHVsZVZhbHVlKSkpOwogCiAg
ICAgICAgIC8vIDMuIExldCB2IGJlIHRoZSB2YWx1ZSBvZiBwZXJmb3JtaW5nIEdldChvLCBpLml0
ZW1fbmFtZSkKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGlt
cG9ydE1vZHVsZVZhbHVlKTsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBpbXBvcnQuZmllbGQpKTsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCBTdHJpbmc6OmZyb21VVEY4KGltcG9ydC5maWVsZCkpKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAogICAgICAgICBzd2l0Y2ggKGltcG9y
dC5raW5kKSB7CkBAIC0xNzcsNyArMTgxLDcgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlMKICAg
ICAgICAgICAgIC8vIDQuIElmIGkgaXMgYSBmdW5jdGlvbiBpbXBvcnQ6CiAgICAgICAgICAgICAv
LyBpLiBJZiBJc0NhbGxhYmxlKHYpIGlzIGZhbHNlLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtF
cnJvci4KICAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5jdGlvbigpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgQVNDSUlMaXRlcmFsKCJpbXBvcnQgZnVuY3Rpb24gbXVzdCBiZSBjYWxsYWJsZSIpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vy
cm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnQgZnVuY3Rpb24i
LCAibXVzdCBiZSBjYWxsYWJsZSIpKSk7CiAKICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlv
biA9IGpzQ2FzdDxKU09iamVjdCo+KHZhbHVlKTsKICAgICAgICAgICAgIC8vIGlpLiBJZiB2IGlz
IGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3Q6CkBAIC0xOTUsNyArMTk5LDcgQEAg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlMKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUlu
Zm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4
XTsKICAgICAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3Rl
ZFNpZ25hdHVyZUluZGV4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0
ZWQgZnVuY3Rpb24ncyBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNz
ZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwgInNpZ25hdHVyZSBkb2Vz
bid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSIp
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBpaWkuIE90aGVyd2lzZToKICAgICAg
ICAgICAgIC8vIGEuIExldCBjbG9zdXJlIGJlIGEgbmV3IGhvc3QgZnVuY3Rpb24gb2YgdGhlIGdp
dmVuIHNpZ25hdHVyZSB3aGljaCBjYWxscyB2IGJ5IGNvZXJjaW5nIFdlYkFzc2VtYmx5IGFyZ3Vt
ZW50cyB0byBKYXZhU2NyaXB0IGFyZ3VtZW50cyB2aWEgVG9KU1ZhbHVlIGFuZCByZXR1cm5zIHRo
ZSByZXN1bHQsIGlmIGFueSwgYnkgY29lcmNpbmcgdmlhIFRvV2ViQXNzZW1ibHlWYWx1ZS4KQEAg
LTIxNSwxOSArMjE5LDE5IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgICAgICAgICBK
U1dlYkFzc2VtYmx5VGFibGUqIHRhYmxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5VGFi
bGUqPih2bSwgdmFsdWUpOwogICAgICAgICAgICAgLy8gaS4gSWYgdiBpcyBub3QgYSBXZWJBc3Nl
bWJseS5UYWJsZSBvYmplY3QsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgogICAgICAg
ICAgICAgaWYgKCF0YWJsZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0
ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1w
b3J0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5UYWJsZSIpKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4
ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJUYWJsZSBpbXBvcnQiLCAiaXMgbm90
IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIikpKTsKIAogICAgICAgICAgICAgdWlu
dDMyX3QgZXhwZWN0ZWRJbml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlv
bi5pbml0aWFsKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBhY3R1YWxJbml0aWFsID0gdGFibGUt
PnNpemUoKTsKICAgICAgICAgICAgIGlmIChhY3R1YWxJbml0aWFsIDwgZXhwZWN0ZWRJbml0aWFs
KQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJUYWJsZSBpbXBvcnQgcHJvdmlkZWQgYW4g
J2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZh
aWxNZXNzYWdlKGltcG9ydCwgIlRhYmxlIGltcG9ydCIsICJwcm92aWRlZCBhbiAnaW5pdGlhbCcg
dGhhdCBpcyB0b28gc21hbGwiKSkpOwogCiAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRpb24udGFibGVJbmZvcm1h
dGlvbi5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBhY3R1YWxNYXhpbXVtID0gdGFibGUtPm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBpZiAo
IWFjdHVhbE1heGltdW0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3Jl
YXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJUYWJsZSBp
bXBvcnQgZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0
aGF0IGl0IGRvZXMiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGlt
cG9ydCwgIlRhYmxlIGltcG9ydCIsICJkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUg
bW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSk7CiAgICAgICAgICAgICAgICAgaWYgKCph
Y3R1YWxNYXhpbXVtID4gKmV4cGVjdGVkTWF4aW11bSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJ
SUxpdGVyYWwoIkltcG9ydGVkIFRhYmxlJ3MgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBt
b2R1bGUncyBleHBlY3RlZCAnbWF4aW11bSciKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgIkltcG9ydGVkIFRhYmxlIiwgIidtYXhpbXVtJyBpcyBsYXJn
ZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIikpKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gaWkuIEFwcGVuZCB2IHRvIHRhYmxlcy4KQEAgLTI0NCwyMCAr
MjQ4LDIwIEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpj
cmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTCiAgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5TWVtb3J5KiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNZW1vcnkqPih2
bSwgdmFsdWUpOwogICAgICAgICAgICAgLy8gaS4gSWYgdiBpcyBub3QgYSBXZWJBc3NlbWJseS5N
ZW1vcnkgb2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAgICAgICAg
IGlmICghbWVtb3J5KQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0
IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKSkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVj
LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiTWVtb3J5IGltcG9ydCIsICJpcyBub3Qg
YW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5IikpKTsKIAogICAgICAgICAgICAgV2Fz
bTo6UGFnZUNvdW50IGRlY2xhcmVkSW5pdGlhbCA9IG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5p
bml0aWFsKCk7CiAgICAgICAgICAgICBXYXNtOjpQYWdlQ291bnQgaW1wb3J0ZWRJbml0aWFsID0g
bWVtb3J5LT5tZW1vcnkoKS5pbml0aWFsKCk7CiAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRJbml0
aWFsIDwgZGVjbGFyZWRJbml0aWFsKQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24o
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJNZW1v
cnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUg
bW9kdWxlJ3MgZGVjbGFyZWQgJ2luaXRpYWwnIGltcG9ydCBtZW1vcnkgc2l6ZSIpKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJNZW1vcnkgaW1wb3J0IiwgInBy
b3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZGVj
bGFyZWQgJ2luaXRpYWwnIGltcG9ydCBtZW1vcnkgc2l6ZSIpKSk7CiAKICAgICAgICAgICAgIGlm
IChXYXNtOjpQYWdlQ291bnQgZGVjbGFyZWRNYXhpbXVtID0gbW9kdWxlSW5mb3JtYXRpb24ubWVt
b3J5Lm1heGltdW0oKSkgewogICAgICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBpbXBvcnRl
ZE1heGltdW0gPSBtZW1vcnktPm1lbW9yeSgpLm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWltcG9ydGVkTWF4aW11bSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlv
bihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoIk1l
bW9yeSBpbXBvcnQgZGlkIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVp
cmVzIHRoYXQgaXQgZG9lcyIpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3Nh
Z2UoaW1wb3J0LCAiTWVtb3J5IGltcG9ydCIsICJkaWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0
IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIikpKTsKIAogICAgICAgICAgICAgICAg
IGlmIChpbXBvcnRlZE1heGltdW0gPiBkZWNsYXJlZE1heGltdW0pCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2
bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGEgJ21heGltdW0nIHRoYXQg
aXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdtYXhpbXVtJyBpbXBvcnQgbWVt
b3J5IHNpemUiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0
ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgIk1lbW9yeSBpbXBvcnQiLCAicHJvdmlkZWQgYSAnbWF4aW11bScgdGhhdCBpcyBsYXJnZXIg
dGhhbiB0aGUgbW9kdWxlJ3MgZGVjbGFyZWQgJ21heGltdW0nIGltcG9ydCBtZW1vcnkgc2l6ZSIp
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIGlpLiBBcHBlbmQgdiB0byBtZW1v
cmllcy4KQEAgLTI3Myw5ICsyNzcsOSBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAg
ICAgICAgQVNTRVJUKG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0u
bXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWw6OkltbXV0YWJsZSk7CiAgICAgICAgICAgICAvLyBp
aS4gSWYgdGhlIGdsb2JhbF90eXBlIG9mIGkgaXMgaTY0IG9yIFR5cGUodikgaXMgbm90IE51bWJl
ciwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAobW9kdWxl
SW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlID09IFdhc206Okk2NCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZXhlYywgdm0sIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0ZWQgZ2xvYmFsIGNhbm5vdCBiZSBh
biBpNjQiKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJB
c3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1w
b3J0ZWQgZ2xvYmFsIiwgImNhbm5vdCBiZSBhbiBpNjQiKSkpOwogICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc051bWJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRl
SlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJpbXBvcnRlZCBn
bG9iYWwgbXVzdCBiZSBhIG51bWJlciIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIG51bWJlciIpKSk7CiAg
ICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCBUb1dlYkFzc2VtYmx5VmFsdWUodikgdG8gaW1wb3J0
cy4KICAgICAgICAgICAgIEFTU0VSVChudW1JbXBvcnRHbG9iYWxzID09IGltcG9ydC5raW5kSW5k
ZXgpOwogICAgICAgICAgICAgc3dpdGNoIChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9y
dC5raW5kSW5kZXhdLnR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAzNjRiNzg2Li4zMTA3
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIGNvbnN0
IFdhc20KICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCB2bSk7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4cCA6IG1vZHVsZUlu
Zm9ybWF0aW9uLmV4cG9ydHMpIHsKLSAgICAgICAgSWRlbnRpZmllciBmaWVsZCA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCBleHAuZmllbGQpOworICAgICAgICBJZGVudGlmaWVyIGZpZWxk
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxk
KSk7CiAgICAgICAgIGFkZEV4cG9ydEVudHJ5KEV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChmaWVs
ZCwgZmllbGQpKTsKICAgICB9CiB9CkBAIC05OSw4ICs5OSw2IEBAIHZvaWQgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBt
b2R1bGUsCiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5bWJvbFRhYmxlID0gbW9kdWxlLT5leHBv
cnRTeW1ib2xUYWJsZSgpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0Q291bnQgPSBjb2Rl
QmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKIAotICAgIC8vIEZJWE1FIHdpcmUgdXAgdGhl
IGltcG9ydHMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxMTgK
LQogICAgIC8vIExldCBleHBvcnRzIGJlIGEgbGlzdCBvZiAoc3RyaW5nLCBKUyB2YWx1ZSkgcGFp
cnMgdGhhdCBpcyBtYXBwZWQgZnJvbSBlYWNoIGV4dGVybmFsIHZhbHVlIGUgaW4gaW5zdGFuY2Uu
ZXhwb3J0cyBhcyBmb2xsb3dzOgogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmly
b25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIG51
bGxwdHIsIGV4cG9ydFN5bWJvbFRhYmxlLCBKU1ZhbHVlKCksIHRoaXMpOwogICAgIGZvciAoY29u
c3QgYXV0byYgZXhwIDogbW9kdWxlSW5mb3JtYXRpb24uZXhwb3J0cykgewpAQCAtMTc5LDcgKzE3
Nyw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVj
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsCiAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMg
PSB0cnVlOwogICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwotICAgICAgICBzeW1ib2xU
YWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIGV4cC5maWVsZCksIGV4cG9ydGVkVmFsdWUsIHNob3VsZFRo
cm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1dFJlc3VsdCk7CisgICAg
ICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KG1vZHVsZUVudmlyb25tZW50LCBl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgU3RyaW5nOjpmcm9tVVRGOChleHAuZmll
bGQpKSwgZXhwb3J0ZWRWYWx1ZSwgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFk
T25seUVycm9ycywgcHV0UmVzdWx0KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHV0UmVzdWx0
KTsKICAgICB9CiAKLS0gCjIuMTAuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>