<?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>155336</bug_id>
          
          <creation_ts>2016-03-10 16:22:33 -0800</creation_ts>
          <short_desc>Implement Function.name and Function#toString for ES6 class.</short_desc>
          <delta_ts>2016-06-06 23:23:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>arv</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>ljharb</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>1173427</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-10 16:22:33 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173429</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-10 16:23:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/25098147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173711</commentid>
    <comment_count>2</comment_count>
      <attachid>273725</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 06:56:52 -0800</bug_when>
    <thetext>Created attachment 273725
proposed patch.

Still need to run benchmarks.  This patch has passed the JSC and layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173737</commentid>
    <comment_count>3</comment_count>
      <attachid>273725</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-11 09:17:17 -0800</bug_when>
    <thetext>Comment on attachment 273725
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173741</commentid>
    <comment_count>4</comment_count>
      <attachid>273725</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-11 09:23:39 -0800</bug_when>
    <thetext>Comment on attachment 273725
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/Executable.cpp:513
&gt; +    m_classSource = unlinkedExecutable-&gt;classSource();

Is this correct with code caching?
Is it possible to construct a conflict here where we get
instantiated with an unlinked code block that isn&apos;t from a class constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173742</commentid>
    <comment_count>5</comment_count>
      <attachid>273725</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 09:25:27 -0800</bug_when>
    <thetext>Comment on attachment 273725
proposed patch.

Let me double check the UnlinkedFunctionExecutable caching issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173743</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-11 09:27:48 -0800</bug_when>
    <thetext>To me it seems like we could construct the same exact
normal &quot;function(){...}&quot; function, call new on it, and then
have a class&apos; constructor be the same source code, and get a
conflict. I don&apos;t remember exactly how the hash is determined,
but it seems possible that this could happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173749</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-11 09:38:00 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; To me it seems like we could construct the same exact
&gt; normal &quot;function(){...}&quot; function, call new on it, and then
&gt; have a class&apos; constructor be the same source code, and get a
&gt; conflict. I don&apos;t remember exactly how the hash is determined,
&gt; but it seems possible that this could happen.

Or even two different classes with the same constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173757</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 09:48:30 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; To me it seems like we could construct the same exact
&gt; &gt; normal &quot;function(){...}&quot; function, call new on it, and then
&gt; &gt; have a class&apos; constructor be the same source code, and get a
&gt; &gt; conflict. I don&apos;t remember exactly how the hash is determined,
&gt; &gt; but it seems possible that this could happen.
&gt; 
&gt; Or even two different classes with the same constructor

I&apos;m aware of the theoretical issue, but testing shows that there&apos;s no issue.  I&apos;ll dig into the code a bit and will update later with reasons why there is / isn&apos;t an issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173827</commentid>
    <comment_count>9</comment_count>
      <attachid>273725</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-11 12:47:31 -0800</bug_when>
    <thetext>Comment on attachment 273725
proposed patch.

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

&gt; Source/JavaScriptCore/parser/ParserFunctionInfo.h:46
&gt;      const Identifier* className = 0;

nullptr

&gt; Source/JavaScriptCore/parser/ParserFunctionInfo.h:50
&gt; +    unsigned startOffset = 0;
&gt; +    unsigned endOffset = 0;
&gt; +    int startLine = 0;
&gt; +    unsigned startColumn = 0;

In other WebKit code we have been using the brace syntax:

    unsigned startOffset { 0 };

Not sure it’s better, but it would be nice to be consistent in style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173836</commentid>
    <comment_count>10</comment_count>
      <attachid>273755</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 12:59:15 -0800</bug_when>
    <thetext>Created attachment 273755
proposed patch with more tests, some additional comments, + darin&apos;s feedback.

I investigated the potential code caching issue, and concluded that there is no issue.  This is because we currently only do caching of unlinked executables for global programs or dynamically created functions via the Function constructor.  Class constructors are not cached, and hence, it is safe to stash the class source in its unlinked function executable.

function-toString-vs-name.js already tests for this caching behavior, and I&apos;ve also added some additional tests to check for global, eval, and Function constructor cases in this revised patch.  If the code caching behavior changes in the future, the tests in function-toString-vs-name.js will catch it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173838</commentid>
    <comment_count>11</comment_count>
      <attachid>273757</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 13:00:09 -0800</bug_when>
    <thetext>Created attachment 273757
diff of the old patch vs the current one: for your reviewing convenience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173839</commentid>
    <comment_count>12</comment_count>
      <attachid>273755</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 13:02:10 -0800</bug_when>
    <thetext>Comment on attachment 273755
proposed patch with more tests, some additional comments, + darin&apos;s feedback.

Saam tells me (offline) that he doesn&apos;t think this need additional review.  Will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173841</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-11 13:08:42 -0800</bug_when>
    <thetext>Thanks for all the reviews.  Landed in r198042: &lt;http://trac.webkit.org/r198042&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179335</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-30 22:50:26 -0700</bug_when>
    <thetext>*** Bug 144285 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199879</commentid>
    <comment_count>15</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-06-06 20:39:35 -0700</bug_when>
    <thetext>*** Bug 149743 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199944</commentid>
    <comment_count>16</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2016-06-06 23:23:32 -0700</bug_when>
    <thetext>*** Bug 149743 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273725</attachid>
            <date>2016-03-11 06:56:52 -0800</date>
            <delta_ts>2016-03-11 12:59:15 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-155336.patch</filename>
            <type>text/plain</type>
            <size>63804</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMyBA
QAorMjAxNi0wMy0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IEZ1bmN0aW9uLm5hbWUgYW5kIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBFUzYgY2xh
c3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUz
MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
b25seSB0aGluZyB0aGF0IHRoZSBFUzYgc3BlYyBzYXlzIGFib3V0IHRvU3RyaW5nIHdpdGggcmVn
YXJkcyB0byBjbGFzcworICAgICAgICBvYmplY3RzIGlzOgorCisgICAgICAgICJUaGUgc3RyaW5n
IHJlcHJlc2VudGF0aW9uIG11c3QgaGF2ZSB0aGUgc3ludGF4IG9mIGEgRnVuY3Rpb25EZWNsYXJh
dGlvbiwKKyAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uLCBHZW5lcmF0b3JEZWNsYXJhdGlvbiwg
R2VuZXJhdG9yRXhwcmVzc2lvbiwgQ2xhc3NEZWNsYXJhdGlvbiwKKyAgICAgICAgQ2xhc3NFeHBy
ZXNzaW9uLCBBcnJvd0Z1bmN0aW9uLCBNZXRob2REZWZpbml0aW9uLCBvciBHZW5lcmF0b3JNZXRo
b2QgZGVwZW5kaW5nCisgICAgICAgIHVwb24gdGhlIGFjdHVhbCBjaGFyYWN0ZXJpc3RpY3Mgb2Yg
dGhlIG9iamVjdC4iCisKKyAgICAgICAgUHJldmlvdXNseSwgaW52b2tpbmcgdG9TdHJpbmcoKSBv
biBhIGNsYXNzIG9iamVjdCB3aWxsIHJldHVybiB0aGUgZnVuY3Rpb24KKyAgICAgICAgc291cmNl
IHN0cmluZyBvZiB0aGUgY2xhc3MnIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAgVGhpcyBkb2VzIG5v
dCBjb25mb3JtIHRvIHRoZQorICAgICAgICBzcGVjIGluIHRoYXQgdGhlIHRvU3RyaW5nIHN0cmlu
ZyBmb3IgYSBjbGFzcyBkb2VzIG5vdCBoYXZlIHRoZSBzeW50YXggb2YgYQorICAgICAgICBDbGFz
c0RlY2xhcmF0aW9uIG9yIENsYXNzRXhwcmVzc2lvbi4KKworICAgICAgICBUaGlzIGlzIG5vdyBm
aXhlZCBieSBkb2luZyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIEFkZGVkIG1fY2xhc3NT
b3VyY2UgdG8gRnVuY3Rpb25FeGVjdXRhYmxlIChhbmQgY29ycmVzcG9uZGluZ2x5IHRvCisgICAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSwg
YW5kIENsYXNzRXhwck5vZGUpLgorICAgICAgICAgICBtX2NsYXNzU291cmNlIGlzIHRoZSBTb3Vy
Y2VDb2RlIGZvciB0aGUgY29kZSByYW5nZSAiY2xhc3MgLi4uIHsgLi4uIH0iLgorCisgICAgICAg
ICAgIFNpbmNlIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbiBpcyB0aGUgaW4gbWVtb3J5
IHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgICAgICBjbGFzcyBvYmplY3QsIG9ubHkgY2xh
c3MgY29uc3RydWN0b3IgZnVuY3Rpb25zIHdpbGwgaGF2ZSBpdHMgbV9jbGFzc1NvdXJjZQorICAg
ICAgICAgICBzZXQuICBtX2NsYXNzU291cmNlIHdpbGwgYmUgIm51bGwiIChieSBkZWZhdWx0KSBm
b3IgYWxsIG90aGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgVGhpcyBpcyBob3cgd2Uga25vdyBp
ZiBhIEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBmb3IgYSBjbGFzcy4KKworICAgICAgICAyLiBUaGUg
Q2xhc3NFeHByTm9kZSBub3cgdHJhY2tzIHRoZSBTb3VyY2VDb2RlIHJhbmdlIGZvciB0aGUgY2xh
c3MgZXhwcmVzc2lvbi4KKyAgICAgICAgICAgVGhpcyBpcyB1c2VkIHRvIHNldCBtX2NsYXNzU291
cmNlIGluIHRoZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBhdAorICAgICAgICAgICBieXRl
Y29kZSBnZW5lcmF0aW9uIHRpbWUsIGFuZCB0aGUgRnVuY3Rpb25FeGVjdXRhYmxlIGxhdGVyIGF0
IGJ5dGVjb2RlCisgICAgICAgICAgIGxpbmtpbmcgdGltZS4KKworICAgICAgICAzLiBGdW5jdGlv
bi5wcm90b3R5cGUudG9TdHJpbmcoKSBub3cgY2hlY2tzIGlmIHRoZSBmdW5jdGlvbiBpcyBmb3Ig
YSBjbGFzcy4KKyAgICAgICAgICAgSWYgc28sIGl0IHJldHVybnMgdGhlIHN0cmluZyBmb3IgdGhl
IGNsYXNzIHNvdXJjZSBpbnN0ZWFkIG9mIGp1c3QgdGhlCisgICAgICAgICAgIGZ1bmN0aW9uIHNv
dXJjZSBmb3IgdGhlIGNsYXNzIGNvbnN0cnVjdG9yLgorCisgICAgICAgICAgIE5vdGU6IHRoZSBj
bGFzcyBzb3VyY2UgaXMgc3RhdGljIGZyb20gdGhlIHRpbWUgdGhlIGNsYXNzIHdhcyBwYXJzZWQu
ICBUaGlzCisgICAgICAgICAgIGNhbiBpbnRyb2R1Y2VzIHNvbWUgd2VpcmRuZXNzIGF0IHJ1bnRp
bWUuICBDb25zaWRlciB0aGUgZm9sbG93aW5nOgorCisgICAgICAgICAgICAgICB2YXIgdjEgPSBj
bGFzcyB7fQorICAgICAgICAgICAgICAgdjEudG9TdHJpbmcoKTsgLy8geWllbGRzICJjbGFzcyB7
fSIuCisKKyAgICAgICAgICAgICAgIGNsYXNzIGMyIGV4dGVuZHMgdjEge30KKworICAgICAgICAg
ICAgICAgYzIuX19wcm90b19fID09PSB2MTsgLy8geWllbGRzIHRydWUgaS5lLiBjMiBleHRlbmRz
IHYxLgorICAgICAgICAgICAgICAgYzIudG9TdHJpbmcoKTsgLy8geWllbGRzICJjbGFzcyBjMiBl
eHRlbmRzIHYxIHt9IiB3aGljaCBpcyBmaW5lLgorCisgICAgICAgICAgICAgICB2MSA9IHt9OyAv
LyBwb2ludCB2MSB0byBzb21ldGhpbmcgZWxzZSBub3cuCisKKyAgICAgICAgICAgICAgIGMyLl9f
cHJvdG9fXyA9PT0gdjE7IC8vIG5vdyB5aWVsZHMgZmFsc2UgaS5lLiBjMiBubyBsb25nZXIgZXh0
ZW5kcyB2MS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGMyIGFjdHVh
bGx5IGV4dGVuZHMgdGhlIGNsYXNzIHRoYXQgdjEgdXNlZCB0bworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgdG8sIGJ1dCAuLi4KKyAgICAgICAgICAgICAgIGMy
LnRvU3RyaW5nKCk7IC8vIHN0aWxsIHlpZWxkcyAiY2xhc3MgYzIgZXh0ZW5kcyB2MSB7fSIgd2hp
Y2ggaXMgbm8gbG9uZ2VyIHRydWUuCisKKyAgICAgICAgICAgSXQgaXMgdW5jbGVhciBob3cgd2Ug
Y2FuIGJlc3QgaW1wbGVtZW50IHRvU3RyaW5nKCkgdG8gYXZvaWQgdGhpcyBpc3N1ZS4KKyAgICAg
ICAgICAgVGhlIGFib3ZlIGJlaGF2aW9yIGlzIGhvdyBDaHJvbWUgKFZlcnNpb24gNTEuMC4yNjcx
LjAgY2FuYXJ5ICg2NC1iaXQpKQorICAgICAgICAgICBjdXJyZW50bHkgaW1wbGVtZW50cyB0b1N0
cmluZygpIG9mIGEgY2xhc3MsIGFuZCB3ZSBkbyB0aGUgc2FtZSBpbiB0aGlzIHBhdGNoLgorICAg
ICAgICAgICBJbiBGaXJlZm94ICg0NS4wKSwgdG9TdHJpbmcoKSBvZiBhIGNsYXNzIHdpbGwgeWll
bGQgdGhlIGZ1bmN0aW9uIHNvdXJjZSBvZiBpdAorICAgICAgICAgICBjb25zdHJ1Y3RvciBmdW5j
dGlvbiwgd2hpY2ggaXMgbm90IGJldHRlci4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBh
bHNvIGFkZGVkIEVTNiBjb21wbGlhbmNlIGZvciBGdW5jdGlvbi5uYW1lIG9uIGNsYXNzIG9iamVj
dHM6CisKKyAgICAgICAgNC4gVGhlIENsYXNzRXhwck5vZGUgbm93IGhhcyBhIG1fZWNtYU5hbWUg
c3RyaW5nIGZvciB0cmFja2luZyB0aGUgaW5mZXJyZWQKKyAgICAgICAgICAgbmFtZSBvZiBhIGNs
YXNzIGFjY29yZGluZyB0byB0aGUgRVM2IHNwZWMuICBUaGUgQVNUQnVpbGRlciBub3cgbWlycm9y
cyBpdHMKKyAgICAgICAgICAgaGFuZGxpbmcgb2YgRnVuY0V4cHJOb2RlcyB0byBDbGFzc0V4cHJO
b2RlcyBpbiBzZXR0aW5nIHRoZSBub2RlcycgbV9lY21hTmFtZQorICAgICAgICAgICB3aGVyZSBy
ZWxldmFudC4KKworICAgICAgICAgICBUaGUgbV9lY21hTmFtZSBpcyBsYXRlciB1c2VkIHRvIHNl
dCB0aGUgbV9lY21hTmFtZSBvZiB0aGUgRnVuY3Rpb25FeGVjdXRhYmxlCisgICAgICAgICAgIG9m
IHRoZSBjbGFzcyBjb25zdHJ1Y3Rvciwgd2hpY2ggaW4gdHVybiBpcyB1c2VkIHRvIHBvcHVsYXRl
IHRoZSBpbml0aWFsIHZhbHVlCisgICAgICAgICAgIG9mIHRoZSBGdW5jdGlvbi5uYW1lIHByb3Bl
cnR5LgorCisgICAgICAgIDUuIEFsc28gcmVuYW1lZCBzb21lIHZhcmlhYmxlIG5hbWVzICgvbV9t
ZXRhZGF0YS9tZXRhZGF0YS8pIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAorICAgICAgICAgICB3ZWJr
aXQgbmFtaW5nIGNvbnZlbnRpb24uCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUFzc2lnblJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVZaWVsZCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFz
c2lnbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAg
KEpTQzo6QmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6
OkZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2Rl
OjpGdW5jRGVjbE5vZGUpOgorICAgICAgICAoSlNDOjpBcnJvd0Z1bmNFeHByTm9kZTo6QXJyb3dG
dW5jRXhwck5vZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0RlY2xOb2RlOjpDbGFzc0RlY2xOb2Rl
KToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6Q2xhc3NFeHByTm9kZSk6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0Rlc3Ry
dWN0dXJpbmdOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzRnVuY0V4cHJO
b2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQXJyb3dGdW5jRXhwck5vZGUp
OgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNDbGFzc0V4cHJOb2RlKToKKyAgICAg
ICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQ29tbWFOb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
cmVzc2lvbk5vZGU6OmlzU2ltcGxlQXJyYXkpOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9k
ZTo6aXNBZGQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpz
dHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VDbGFzcyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oOgorICAgICAg
ICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUVtcHR5TGV0RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhc3NF
eHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFycm93RnVuY3Rpb25FeHByKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoK
KwogMjAxNi0wMy0xMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBmaXggQ2hhbmdlbG9nLiBnaXQgbWVyZ2VkIHBvb3JseS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTk3OTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNSw2ICsxMDUsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgLCBtX2VjbWFOYW1lKG5v
ZGUtPmVjbWFOYW1lKCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUo
KSkKICAgICAsIG1fc291cmNlT3ZlcnJpZGUoV1RGTW92ZShzb3VyY2VPdmVycmlkZSkpCisgICAg
LCBtX2NsYXNzU291cmNlKG5vZGUtPmNsYXNzU291cmNlKCkpCiB7CiAgICAgQVNTRVJUKG1fY29u
c3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rvcktp
bmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMTk3OTcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Niw5ICs3NiwxNCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAg
Y29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFOYW1lOyB9
CisgICAgdm9pZCBzZXRFY21hTmFtZShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7IG1fZWNtYU5h
bWUgPSBuYW1lOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmZlcnJlZE5hbWU7IH0KICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH07CiAgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNvdXJjZVBhcnNlTW9kZT4o
bV9zb3VyY2VQYXJzZU1vZGUpOyB9OworCisgICAgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzU291cmNlOyB9OworICAgIHZvaWQgc2V0Q2xhc3NT
b3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fY2xhc3NTb3VyY2UgPSBzb3VyY2U7
IH07CisKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
U3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtMTYzLDYgKzE2
OCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX2VjbWFOYW1lOwogICAgIElkZW50aWZp
ZXIgbV9pbmZlcnJlZE5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZU92
ZXJyaWRlOworICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKIAogICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHJldmlzaW9uIDE5Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDEyLTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENh
bWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEsIFMuTC4KICAqCkBAIC0yODEwLDEwICsyODEwLDEzIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXIKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdp
c3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0RlZmF1
bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCisgICAgY29uc3QgSWRlbnRpZmllciYgZWNt
YU5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlKQogewogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV92bS0+YnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIG5hbWUpOwogICAgIGV4
ZWN1dGFibGUtPnNldEludmFsaWRUeXBlUHJvZmlsaW5nT2Zmc2V0cygpOworICAgIGV4ZWN1dGFi
bGUtPnNldEVjbWFOYW1lKGVjbWFOYW1lKTsKKyAgICBleGVjdXRhYmxlLT5zZXRDbGFzc1NvdXJj
ZShjbGFzc1NvdXJjZSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRG
dW5jdGlvbkV4cHIoZXhlY3V0YWJsZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE5
Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDksIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3
endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBTLkwu
CiAgKgpAQCAtNTE4LDcgKzUxOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVn
aXN0ZXJJRCogZHN0LCBGdW5jRXhwck5vZGUqIGZ1bmMpOwotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Rl
ZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUsIGNvbnN0IFNvdXJj
ZUNvZGUmIGNsYXNzU291cmNlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVu
Y3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDE5Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIC8qCiAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQogKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20p
Ci0qICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMDksIDIwMTItMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJp
Y2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBP
cmxvdmljaAogKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CkBAIC0zMjIwLDExICszMjIwLDE2IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZSgKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3I7CiAKICAgICAv
LyBGSVhNRTogTWFrZSB0aGUgcHJvdG90eXBlIG5vbi1jb25maWd1cmFibGUgJiBub24td3JpdGFi
bGUuCi0gICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNzaW9uKQorICAgIGlmIChtX2NvbnN0cnVj
dG9yRXhwcmVzc2lvbikgeworICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24t
PmlzRnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRh
dGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikt
Pm1ldGFkYXRhKCk7CisgICAgICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShlY21hTmFtZSgpKTsK
KyAgICAgICAgbWV0YWRhdGEtPnNldENsYXNzU291cmNlKG1fY2xhc3NTb3VyY2UpOwogICAgICAg
ICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fY29uc3RydWN0b3JFeHBy
ZXNzaW9uKTsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICBjb25zdHJ1Y3RvciA9
IGdlbmVyYXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCksCi0gICAgICAgICAgICBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UsIG1fbmFtZSk7CisgICAgICAgICAg
ICBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgOiBDb25zdHJ1Y3Rv
cktpbmQ6OkJhc2UsCisgICAgICAgICAgICBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3Vy
Y2UpOwogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5TmFtZXMgPSBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgJKHJldmlzaW9uIDE5Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNDYsNyArMzQ2LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgYXV0byBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNF
eHByTm9kZSo+KHJocyktPm1ldGFkYXRhKCk7CiAgICAgICAgICAgICBtZXRhZGF0YS0+c2V0RWNt
YU5hbWUoaWRlbnQpOwogICAgICAgICAgICAgbWV0YWRhdGEtPnNldEluZmVycmVkTmFtZShpZGVu
dCk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChyaHMtPmlzQ2xhc3NFeHByTm9kZSgp
KQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2xhc3NFeHByTm9kZSo+KHJocyktPnNldEVjbWFO
YW1lKGlkZW50KTsKICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgcmhzLCBhc3NpZ25t
ZW50Q29udGV4dCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBk
aXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CkBAIC0zNjQsMTAgKzM2NSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIENsYXNzRXhwck5vZGUq
IGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBF
eHByZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCisgICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xh
c3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckNsYXNz
SW5mbzxBU1RCdWlsZGVyPiYgY2xhc3NJbmZvLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vu
dmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQ
cm9wZXJ0eUxpc3ROb2RlKiBzdGF0aWNNZXRob2RzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgQ2xhc3NFeHByTm9kZShsb2NhdGlvbiwgbmFtZSwgY2xhc3NFbnZp
cm9ubWVudCwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBpbnN0YW5jZU1ldGhvZHMsIHN0YXRp
Y01ldGhvZHMpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihjbGFzc0luZm8uc3RhcnRPZmZzZXQsIGNsYXNzSW5mby5lbmRPZmZzZXQsIGNs
YXNzSW5mby5zdGFydExpbmUsIGNsYXNzSW5mby5zdGFydENvbHVtbik7CisgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXNzRXhwck5vZGUobG9jYXRpb24sICpjbGFzc0luZm8u
Y2xhc3NOYW1lLCBzb3VyY2UsIGNsYXNzRW52aXJvbm1lbnQsIGNvbnN0cnVjdG9yLCBwYXJlbnRD
bGFzcywgaW5zdGFuY2VNZXRob2RzLCBzdGF0aWNNZXRob2RzKTsKICAgICB9CiAKICAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZv
KQpAQCAtNDQyLDcgKzQ0NCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGF1dG8gbWV0YWRhdGEg
PSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihub2RlKS0+bWV0YWRhdGEoKTsKICAgICAgICAg
ICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZSgqcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIG1l
dGFkYXRhLT5zZXRJbmZlcnJlZE5hbWUoKnByb3BlcnR5TmFtZSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIGlmIChub2RlLT5pc0NsYXNzRXhwck5vZGUoKSkKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PENsYXNzRXhwck5vZGUqPihub2RlKS0+c2V0RWNtYU5hbWUoKnByb3BlcnR5TmFtZSk7
CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqcHJvcGVy
dHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcpOwogICAgIH0KICAgICBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFy
ZW5hLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sKQpAQCAt
MTMwMSw3ICsxMzA0LDggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
bwogICAgICAgICAgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihleHByKS0+bWV0YWRhdGEoKTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS0+c2V0RWNt
YU5hbWUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS0+
c2V0SW5mZXJyZWROYW1lKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGV4cHItPmlzQ2xhc3NFeHByTm9kZSgpKQorICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENsYXNzRXhwck5vZGUqPihleHByKS0+c2V0RWNtYU5hbWUocmVz
b2x2ZS0+aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2Rl
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBleHByLCBBc3NpZ25tZW50Q29udGV4dDo6QXNzaWdubWVudEV4cHJl
c3Npb24pOwogICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRp
dm90LCBlbmQpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTk3OTcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC04OTAsMjcgKzg5MCwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9
CiAKICAgICAKLSAgICBpbmxpbmUgQmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSkKKyAgICBpbmxpbmUgQmFzZUZ1bmNFeHByTm9kZTo6QmFzZUZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCi0gICAgICAgICwgbV9tZXRhZGF0YShtX21l
dGFkYXRhKQorICAgICAgICAsIG1fbWV0YWRhdGEobWV0YWRhdGEpCiAgICAgewogICAgICAgICBt
X21ldGFkYXRhLT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lv
bik7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQot
ICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBz
b3VyY2UpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKKyAgICAgICAg
OiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBpZGVudCwgbWV0YWRhdGEsIHNvdXJjZSkKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQor
ICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCisgICAg
ICAgICwgbV9tZXRhZGF0YShtZXRhZGF0YSkKICAgICB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZp
bmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQog
Ci0gICAgaW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAg
ICAgICAgOiBCYXNlRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBpZGVudCwgbV9tZXRhZGF0YSwgc291
cmNlKQorICAgIGlubGluZSBBcnJvd0Z1bmNFeHByTm9kZTo6QXJyb3dGdW5jRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQor
ICAgICAgICA6IEJhc2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtZXRhZGF0YSwgc291
cmNlKQogICAgIHsKICAgICB9CiAKQEAgLTkyNywxMCArOTI3LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2xhc3NFeHByTm9kZTo6Q2xhc3NFeHByTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSog
Y29uc3RydWN0b3JFeHByZXNzaW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NIZXJpdGFnZSwgUHJv
cGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQcm9wZXJ0eUxpc3ROb2RlKiBzdGF0aWNN
ZXRob2RzKQorICAgIGlubGluZSBDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNv
dXJjZUNvZGUmIGNsYXNzU291cmNlLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25t
ZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNzaW9uLCBFeHByZXNzaW9uTm9k
ZSogY2xhc3NIZXJpdGFnZSwgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQcm9w
ZXJ0eUxpc3ROb2RlKiBzdGF0aWNNZXRob2RzKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxv
Y2F0aW9uKQogICAgICAgICAsIFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKGNsYXNzRW52aXJvbm1l
bnQpCisgICAgICAgICwgbV9jbGFzc1NvdXJjZShjbGFzc1NvdXJjZSkKICAgICAgICAgLCBtX25h
bWUobmFtZSkKKyAgICAgICAgLCBtX2VjbWFOYW1lKCZuYW1lKQogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JFeHByZXNzaW9uKGNvbnN0cnVjdG9yRXhwcmVzc2lvbikKICAgICAgICAgLCBtX2NsYXNz
SGVyaXRhZ2UoY2xhc3NIZXJpdGFnZSkKICAgICAgICAgLCBtX2luc3RhbmNlTWV0aG9kcyhpbnN0
YW5jZU1ldGhvZHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZp
c2lvbiAxOTc5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSwgMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHly
aWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0xNjYsNiArMTY2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXJyb3dGdW5jRXhw
ck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXND
bGFzc0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzQ29tbWFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzU2ltcGxlQXJyYXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTg0NCw3ICsx
ODQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIG92ZXJyaWRl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyBtX2lkZW50ID0gaWRlbnQ7IH0KICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50OyB9Ci0gICAgICAg
IHZvaWQgc2V0RWNtYU5hbWUoY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgQVNTRVJUKCFl
Y21hTmFtZS5pc051bGwoKSk7IG1fZWNtYU5hbWUgPSBlY21hTmFtZTsgfQorICAgICAgICB2b2lk
IHNldEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKSB7IG1fZWNtYU5hbWUgPSBl
Y21hTmFtZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJu
IG1faWRlbnQuaXNFbXB0eSgpID8gbV9lY21hTmFtZSA6IG1faWRlbnQ7IH0KICAgICAgICAgdm9p
ZCBzZXRJbmZlcnJlZE5hbWUoY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKSB7IEFTU0VS
VCghaW5mZXJyZWROYW1lLmlzTnVsbCgpKTsgbV9pbmZlcnJlZE5hbWUgPSBpbmZlcnJlZE5hbWU7
IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV9p
bmZlcnJlZE5hbWUuaXNFbXB0eSgpID8gbV9pZGVudCA6IG1faW5mZXJyZWROYW1lOyB9CkBAIC0x
ODYyLDYgKzE4NjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRFbmRQb3Np
dGlvbihKU1RleHRQb3NpdGlvbik7CiAKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KKyAgICAgICAgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzU291cmNlOyB9CisgICAgICAgIHZv
aWQgc2V0Q2xhc3NTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fY2xhc3NTb3Vy
Y2UgPSBzb3VyY2U7IH0KIAogICAgICAgICBpbnQgc3RhcnRTdGFydE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnRTdGFydE9mZnNldDsgfQogICAgICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQpAQCAtMTg4OCw2ICsx
ODkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX2Z1bmN0aW9uTmFtZVN0YXJ0
OwogICAgICAgICBpbnQgbV9wYXJhbWV0ZXJzU3RhcnQ7CiAgICAgICAgIFNvdXJjZUNvZGUgbV9z
b3VyY2U7CisgICAgICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKICAgICAgICAgaW50IG1f
c3RhcnRTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKICAg
ICAgICAgaW50IG1fbGFzdExpbmU7CkBAIC0xOTc0LDE1ICsxOTc4LDIyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9w
ZXJhdG9yIG5ldzsKIAotICAgICAgICBDbGFzc0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25t
ZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNzc2lvbiwKKyAgICAgICAgQ2xh
c3NFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsCisgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25t
ZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNz
c2lvbiwKICAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlM
aXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQcm9wZXJ0eUxpc3ROb2RlKiBzdGF0aWNNZXRob2Rz
KTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9lY21hTmFt
ZSA/ICptX2VjbWFOYW1lIDogbV9uYW1lOyB9CisgICAgICAgIHZvaWQgc2V0RWNtYU5hbWUoY29u
c3QgSWRlbnRpZmllciYgbmFtZSkgeyBtX2VjbWFOYW1lID0gbV9uYW1lLmlzTnVsbCgpID8gJm5h
bWUgOiAmbV9uYW1lOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwog
CisgICAgICAgIGJvb2wgaXNDbGFzc0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV9uYW1lOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2VjbWFO
YW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9jb25zdHJ1Y3RvckV4cHJlc3Npb247CiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NsYXNzSGVyaXRhZ2U7CiAgICAgICAgIFByb3BlcnR5
TGlzdE5vZGUqIG1faW5zdGFuY2VNZXRob2RzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTk3OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2LTIwMTAsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxOTMsNiArMjE5Myw5IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUNsYXNzRXgKIHsKICAgICBBU1NFUlQobWF0Y2goQ0xBU1NUT0tFTikp
OwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIGlu
Zm8uc3RhcnRMaW5lID0gbG9jYXRpb24ubGluZTsKKyAgICBpbmZvLnN0YXJ0Q29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKKyAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7
CiAgICAgbmV4dCgpOwogCiAgICAgQXV0b1BvcFNjb3BlUmVmIGNsYXNzU2NvcGUodGhpcywgcHVz
aFNjb3BlKCkpOwpAQCAtMjIwMyw3ICsyMjA2LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlQ2xhc3NFeAogICAgIGNvbnN0IElkZW50aWZpZXIqIGNsYXNzTmFtZSA9IG51bGxw
dHI7CiAgICAgaWYgKG1hdGNoKElERU5UKSkgewogICAgICAgICBjbGFzc05hbWUgPSBtX3Rva2Vu
Lm1fZGF0YS5pZGVudDsKLSAgICAgICAgaW5mby5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgZmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlTGV4aWNh
bFZhcmlhYmxlKGNsYXNzTmFtZSwgdHJ1ZSkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0
cmljdE1vZGUsICInIiwgY2xhc3NOYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGNsYXNz
IG5hbWUiKTsKICAgICB9IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFt
ZSkgewpAQCAtMjIxNCw2ICsyMjE2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlQ2xhc3NFeAogICAgIH0gZWxzZQogICAgICAgICBjbGFzc05hbWUgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAgQVNTRVJUKGNsYXNzTmFtZSk7CisgICAgaW5m
by5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAKICAgICBUcmVlRXhwcmVzc2lvbiBwYXJlbnRDbGFz
cyA9IDA7CiAgICAgaWYgKGNvbnN1bWUoRVhURU5EUykpIHsKQEAgLTIzNDMsOSArMjM0NiwxMCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAx
OwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScg
YWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKLSAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRl
eHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCAqY2xhc3NOYW1lLCBjbGFzc1Njb3BlLT5maW5h
bGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGluc3Rh
bmNlTWV0aG9kcywgc3RhdGljTWV0aG9kcyk7CisgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBj
b250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxp
emVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBpbnN0YW5j
ZU1ldGhvZHMsIHN0YXRpY01ldGhvZHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVC
dWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Np
b247CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9u
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
RnVuY3Rpb25JbmZvLmgJKHJldmlzaW9uIDE5Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNiArNDQsMTAg
QEAgc3RydWN0IFBhcnNlckZ1bmN0aW9uSW5mbyB7CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+CiBzdHJ1Y3QgUGFyc2VyQ2xhc3NJbmZvIHsKICAgICBjb25zdCBJZGVudGlmaWVyKiBjbGFz
c05hbWUgPSAwOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICB1bnNpZ25lZCBl
bmRPZmZzZXQgPSAwOworICAgIGludCBzdGFydExpbmUgPSAwOworICAgIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uID0gMDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxOTc5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVFbXB0eUxl
dEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpIHsg
cmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQotICAgIENsYXNz
RXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVz
c2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7
IH0KKyAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IFBhcnNlckNsYXNzSW5mbzxTeW50YXhDaGVja2VyPiYsIFZhcmlhYmxlRW52
aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwg
UHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
aW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVj
dG9yS2luZCwgU3VwZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sLCBJ
bm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgPSBOb0lubmVyQXJyb3dGdW5jdGlvbkZlYXR1
cmVzKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShy
ZXZpc2lvbiAxOTc5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTAsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01MTAsNiArNTEwLDcgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUo
VgogICAgIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQoKTsKICAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCk7CiAgICAgbV90eXBl
UHJvZmlsaW5nRW5kT2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0KCk7CisgICAgbV9jbGFzc1NvdXJjZSA9IHVubGlua2VkRXhlY3V0YWJsZS0+Y2xhc3NT
b3VyY2UoKTsKIH0KIAogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJ
KHJldmlzaW9uIDE5Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTAsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2Miw2
ICs2NjIsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQogICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNC
dWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5
KCk7IH0KKyAgICBib29sIGlzQ2xhc3MoKSBjb25zdCB7IHJldHVybiAhbV9jbGFzc1NvdXJjZS5p
c051bGwoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogICAgIGJv
b2wgaXNHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdldHRlck1vZGU7IH0KICAgICBib29sIGlzU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gcGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOyB9CkBAIC02NzIsNiArNjcz
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIHNpemVfdCBw
YXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJh
bWV0ZXJDb3VudCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCiAgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKTsgfQorICAgIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9jbGFzc1NvdXJjZTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCkBA
IC03MDgsNiArNzEwLDcgQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db2Rl
QmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwogICAgIFJlZlB0cjxUeXBlU2V0PiBtX3Jl
dHVyblN0YXRlbWVudFR5cGVTZXQ7CiAgICAgV3JpdGVCYXJyaWVyPEluZmVycmVkVmFsdWU+IG1f
c2luZ2xldG9uRnVuY3Rpb247CisgICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogfTsKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5Nzk3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDA5LCAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
ODksNyArODksMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUg
Y29kZV1cbn0iKSk7CiAKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
ZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwotICAgICAgICAKKyAgICAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzQ2xhc3MoKSkgeworICAgICAgICAgICAgU3RyaW5nVmlldyBjbGFzc1NvdXJjZSA9IGV4
ZWN1dGFibGUtPmNsYXNzU291cmNlKCkudmlldygpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBjbGFzc1NvdXJjZS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKTsKKyAgICAgICAgfQorCiAgICAgICAgIFN0cmluZyBmdW5jdGlvbkhlYWRlciA9IGV4
ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpID8gIiIgOiAiZnVuY3Rpb24gIjsKICAgICAgICAg
CiAgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlk
ZXIoKS0+Z2V0UmFuZ2UoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShy
ZXZpc2lvbiAxOTc5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJ
KHdvcmtpbmcgY29weSkKQEAgLTgwMSw3ICs4MDEsNyBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25f
bmFtZV9wcm9wZXJ0eV9pc250X3dyaXRhYmxlX2lzX2NvbmZpZ3VyYWJsZS5qcwogICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X29iamVjdF9t
ZXRob2RzX2NsYXNzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2Z1bmN0aW9uX25hbWVfcHJvcGVydHlfb2JqZWN0X21ldGhvZHNfZnVu
Y3Rpb24uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFt
ZV9wcm9wZXJ0eV9zaG9ydGhhbmRfbWV0aG9kc19ub19sZXhpY2FsX2JpbmRpbmcuanMKQEAgLTgw
OSw3ICs4MDksNyBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV9zeW1ib2wt
a2V5ZWRfbWV0aG9kcy5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZnVuY3Rp
b25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfY2xhc3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0
eV92YXJpYWJsZXNfZnVuY3Rpb24uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZ2VuZXJhdG9yc18lR2VuZXJhdG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTk3OTcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDMtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBGdW5jdGlvbi5uYW1lIGFuZCBGdW5jdGlvbiN0
b1N0cmluZyBmb3IgRVM2IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1MzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtbmFtZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1uYW1lLmpzOgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAgLSBSZWJhc2VkIGV4cGVj
dGVkIHJlc3VsdC4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi10b1N0cmlu
Zy12cy1uYW1lLmpzOgorICAgICAgICAtIEFkZGVkIG5ldyB0ZXN0cyBmb3IgY2xhc3MuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZXhwZWN0
ZWQudHh0OgorICAgICAgICAtIFJlYmFzZWQgZXhwZWN0ZWQgcmVzdWx0LgorCiAyMDE2LTAzLTEw
ICBBbmR5IFZhbldhZ29uZXIgIDxhbmR5QGluc3RydWN0dXJlLmNvbT4KIAogICAgICAgICBBZGQg
c2hvdWxkTm90QmUgdG8gc3RhbmRhbG9uZSB0ZXN0IGhhcm5lc3MKSW5kZXg6IExheW91dFRlc3Rz
L2pzL2NsYXNzLXN5bnRheC1uYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9jbGFzcy1zeW50YXgtbmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Nzk3MCkK
KysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1uYW1lLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIsMjQgKzEyLDI0IEBAIFBBU1MgY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHt9
IH06OjpTeW50YXgKIFBBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30g
fTo6OlN5bnRheEVycm9yOiBDbGFzcyBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUuCiBQQVNT
IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0KIFBBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9Ci1QQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07
IEEudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBBKCkge30nCi1QQVNTICd1c2Ugc3RyaWN0JzsgY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEoKSB7
fScKK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpOjo6J2Ns
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7
IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpOjo6J2NsYXNzIEEgeyBjb25zdHJ1Y3Rv
cigpIHt9IH0nCiBQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgQSkgaW5z
dGFuY2VvZiBBCiBQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30g
fTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEKLVBBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0
aGlzLmJhc2UgPSBBOyB9IH07IChuZXcgQSkuYmFzZS50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEo
KSB7IHRoaXMuYmFzZSA9IEE7IH0nCi1QQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH07IChuZXcgQSkuYmFzZS50b1N0cmluZygpOjo6
J2Z1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0nCitQQVNTIGNsYXNzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9OyAobmV3IEEpLmJhc2UudG9TdHJpbmcoKTo6Oidj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfScKK1BBU1MgJ3VzZSBz
dHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsgKG5l
dyBBKS5iYXNlLnRvU3RyaW5nKCk6OjonY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJh
c2UgPSBBOyB9IH0nCiBQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIg
ZXh0ZW5kcyBBIHt9OwogUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3Rvcigp
IHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHt9OwotUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQi50b1N0cmlu
ZygpOjo6J2Z1bmN0aW9uIEIoKSB7fScKLVBBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyBBIHsgY29u
c3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsg
Qi50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEIoKSB7fScKK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIudG9T
dHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfScKK1BBU1Mg
J3VzZSBzdHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVu
ZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQi50b1N0cmluZygpOjo6J2NsYXNzIEIgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JwogUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7fTsgKG5ldyBCKSBpbnN0YW5jZW9mIEEKIFBBU1MgJ3Vz
ZSBzdHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMg
QSB7fTsgKG5ldyBCKSBpbnN0YW5jZW9mIEEKIFBBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkg
e30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307IChuZXcgQikgaW5zdGFuY2VvZiBCCiBQQVNTICd1
c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRz
IEEge307IChuZXcgQikgaW5zdGFuY2VvZiBCCi1QQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3Rvcigp
IHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMu
YmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5iYXNlLnRvU3RyaW5nKCk6
OjonZnVuY3Rpb24gQSgpIHt9JwotUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1
Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7
IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5iYXNlLnRvU3Ry
aW5nKCk6OjonZnVuY3Rpb24gQSgpIHt9JwotUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJh
c2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH07IChuZXcgQikuZGVyaXZlZC50b1N0cmluZygp
Ojo6J2Z1bmN0aW9uIEIoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9
IEI7IH0nCi1QQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsg
Y2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0g
QTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAobmV3IEIpLmRlcml2ZWQudG9TdHJpbmcoKTo6Oidm
dW5jdGlvbiBCKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9
JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7
IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBC
OyB9IH07IChuZXcgQikuYmFzZS50b1N0cmluZygpOjo6J2NsYXNzIEEgeyBjb25zdHJ1Y3Rvcigp
IHt9IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsg
Y2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0g
QTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAobmV3IEIpLmJhc2UudG9TdHJpbmcoKTo6OidjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJh
c2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH07IChuZXcgQikuZGVyaXZlZC50b1N0cmluZygp
Ojo6J2NsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFz
ZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfScKK1BBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkg
eyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH07IChuZXcgQiku
ZGVyaXZlZC50b1N0cmluZygpOjo6J2NsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7
IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfScKIAogQ2xhc3Mg
ZXhwcmVzc2lvbgogUEFTUyBBOjo6UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IEEKQEAgLTUyLDggKzUyLDggQEAgUEFTUyB0eXBlb2YgKG5ldyAoY2xhc3MgQSB7fSkpOjo6Im9i
amVjdAogUEFTUyAndXNlIHN0cmljdCc7IHR5cGVvZiAobmV3IChjbGFzcyBBIHt9KSk6Ojoib2Jq
ZWN0IgogUEFTUyAobmV3IChjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7
IH0gfSkpLmJhc2UKIFBBU1MgJ3VzZSBzdHJpY3QnOyAobmV3IChjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSkpLmJhc2UKLVBBU1MgKG5ldyAoY2xhc3MgQSB7IGNv
bnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNlLnRvU3RyaW5nKCk6OjoiZnVu
Y3Rpb24gQSgpIHsgdGhpcy5iYXNlID0gQTsgfSIKLVBBU1MgJ3VzZSBzdHJpY3QnOyAobmV3IChj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSkpLmJhc2UudG9TdHJp
bmcoKTo6OiJmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2UgPSBBOyB9IgorUEFTUyAobmV3IChjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSkpLmJhc2UudG9TdHJpbmco
KTo6OiJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSIKK1BBU1Mg
J3VzZSBzdHJpY3QnOyAobmV3IChjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9
IEE7IH0gfSkpLmJhc2UudG9TdHJpbmcoKTo6OiJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRo
aXMuYmFzZSA9IEE7IH0gfSIKIFBBU1MgY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9
KQogUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEge307IChjbGFzcyBCIGV4dGVuZHMgQSB7fSkK
IFBBU1MgY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9KTsgQjo6OlJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCCkBAIC02NCwzNiArNjQsMzYgQEAgUEFTUyBjbGFz
cyBBIHt9OyBuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIAogUEFTUyAndXNlIHN0cmljdCc7IGNsYXNz
IEEge307IG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsg
dGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KQogUEFTUyBjbGFzcyBBIHt9OyAo
bmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJh
c2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0pKSBpbnN0YW5jZW9mIEEKIFBBU1MgJ3VzZSBz
dHJpY3QnOyBjbGFzcyBBIHt9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9y
KCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0pKSBpbnN0
YW5jZW9mIEEKLVBBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyAoY2xhc3Mg
QiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhp
cy5kZXJpdmVkID0gQjsgfSB9KSkuYmFzZS50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEoKSB7fScK
LVBBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChj
bGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBB
OyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0pKS5iYXNlLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQSgp
IHt9JwotUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChjbGFzcyBCIGV4
dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRl
cml2ZWQgPSBCOyB9IH0pKS5kZXJpdmVkLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQigpIHsgc3Vw
ZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfScKLVBBU1MgJ3VzZSBzdHJp
Y3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMg
QSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQg
PSBCOyB9IH0pKS5kZXJpdmVkLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQigpIHsgc3VwZXIoKTsg
dGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfScKK1BBU1MgY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkge30gfTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsg
c3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuYmFzZS50b1N0
cmluZygpOjo6J2NsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCitQQVNTICd1c2Ugc3RyaWN0
JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEg
eyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0g
QjsgfSB9KSkuYmFzZS50b1N0cmluZygpOjo6J2NsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0n
CitQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5k
cyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZl
ZCA9IEI7IH0gfSkpLmRlcml2ZWQudG9TdHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgQSB7IGNv
bnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9
IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5l
dyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNl
ID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmluZygpOjo6J2NsYXNz
IEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRo
aXMuZGVyaXZlZCA9IEI7IH0gfScKIAogQ2xhc3MgZXhwcmVzc2lvbiBhc3NpZ25tZW50IHRvIHZh
cmlhYmxlCiBQQVNTIEE6OjpSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQQog
UEFTUyAndXNlIHN0cmljdCc7IEE6OjpSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogQQogUEFTUyB2YXIgVmFyQSA9IGNsYXNzIHt9CiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZh
ckEgPSBjbGFzcyB7fQotUEFTUyB2YXIgVmFyQSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9
OyBWYXJBLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gKCkge30nCi1QQVNTICd1c2Ugc3RyaWN0Jzsg
dmFyIFZhckEgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQS50b1N0cmluZygpOjo6
J2Z1bmN0aW9uICgpIHt9JworUEFTUyB2YXIgVmFyQSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7
fSB9OyBWYXJBLnRvU3RyaW5nKCk6OjonY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCitQQVNT
ICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFy
QS50b1N0cmluZygpOjo6J2NsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9JwogUEFTUyBWYXJBOjo6
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFZhckEKIFBBU1MgJ3VzZSBzdHJp
Y3QnOyBWYXJBOjo6UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFZhckEKIFBB
U1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9CiBQQVNTICd1c2Ugc3Ry
aWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9Ci1QQVNTIHZhciBW
YXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQS50b1N0cmluZygpOjo6J2Z1
bmN0aW9uIEEoKSB7fScKLVBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH07IFZhckEudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBBKCkge30nCitQ
QVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQS50b1N0cmlu
ZygpOjo6J2NsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCitQQVNTICd1c2Ugc3RyaWN0Jzsg
dmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5nKCk6
OjonY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfScKIFBBU1MgdmFyIFZhckEgPSBjbGFzcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogQQogUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3Mg
QSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpOjo6UmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IEEKIFBBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7fSB9OyAobmV3IFZhckEpIGluc3RhbmNlb2YgVmFyQQogUEFTUyAndXNlIHN0cmljdCc7
IHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyBWYXJBKSBpbnN0
YW5jZW9mIFZhckEKLVBBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRo
aXMuYmFzZSA9IEE7IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24g
QSgpIHsgdGhpcy5iYXNlID0gQTsgfScKLVBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNs
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9OyAobmV3IFZhckEpLmJh
c2UudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2UgPSBBOyB9JworUEFTUyB2
YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9OyAo
bmV3IFZhckEpLmJhc2UudG9TdHJpbmcoKTo6OidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRo
aXMuYmFzZSA9IEE7IH0gfScKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9OyAobmV3IFZhckEpLmJhc2UudG9T
dHJpbmcoKTo6OidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfScK
IFBBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9
IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OwogUEFTUyAndXNlIHN0
cmljdCc7IHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIg
PSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsKIFBBU1MgdmFyIFZh
ckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0
ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCOjo6UmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IEIKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBj
b25zdHJ1Y3RvcigpIHt9IH07IEI6OjpSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogQgotUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBW
YXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IFZhckIudG9T
dHJpbmcoKTo6OidmdW5jdGlvbiBCKCkge30nCi1QQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEg
PSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5k
cyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJCLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24g
QigpIHt9JworUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZh
ciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IFZhckIu
dG9TdHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfScK
K1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9
IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH07
IFZhckIudG9TdHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkg
e30gfScKIFBBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIg
VmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgfTsgKG5ldyBWYXJCKSBpbnN0YW5jZW9mIFZh
ckEKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3Rvcigp
IHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyB9OyAobmV3IFZhckIpIGlu
c3RhbmNlb2YgVmFyQQogUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9
IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyB9OyAobmV3IFZhckIpIGluc3Rh
bmNlb2YgVmFyQgpAQCAtMTE4LDcgKzExOCw3IEBAIFBBU1MgY2xhc3MgQSB7fTsgdmFyIHJlc3Vs
dCA9IEE7IHJlc3VsdAogUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEge307IHZhciByZXN1bHQg
PSBBOyByZXN1bHQKIFBBU1MgZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbzo6OjEwCiBQQVNTICd1
c2Ugc3RyaWN0JzsgZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbzo6OlJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBGb28KLVBBU1MgZXZhbCgnY2xhc3MgQmFyIHsgY29uc3RydWN0
b3IoKSB7fSB9OyBCYXIudG9TdHJpbmcoKScpOzo6OidmdW5jdGlvbiBCYXIoKSB7fScKK1BBU1Mg
ZXZhbCgnY2xhc3MgQmFyIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCYXIudG9TdHJpbmcoKScpOzo6
OidjbGFzcyBCYXIgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCiBQQVNTICd1c2Ugc3RyaWN0JzsgZXZh
bCgnY2xhc3MgQmFyIHsgY29uc3RydWN0b3IoKSB7fSB9Jyk7IEJhci50b1N0cmluZygpOjo6UmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEJhcgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQKIApJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1u
YW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1z
eW50YXgtbmFtZS5qcwkocmV2aXNpb24gMTk3OTcwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2NsYXNzLXN5bnRheC1uYW1lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwx
MCBAQCBmdW5jdGlvbiBzaG91bGROb3RUaHJvdyhzKSB7CiBmdW5jdGlvbiBzaG91bGRCZShhLCBi
KSB7CiAgICAgaWYgKGV2YWwoYSkgPT09IGV2YWwoYikpCiAgICAgICAgIHRlc3RQYXNzZWQoYSAr
ICI6OjoiICsgYik7Ci0gICAgZWxzZQorICAgIGVsc2UgewogICAgICAgICB0ZXN0RmFpbGVkKGEg
KyAiOjo6IiArIGIpOworICAgICAgICB0ZXN0RmFpbGVkKCInIiArIGV2YWwoYSkgKyAiJyIgKyAi
Ojo6IiArICInIiArIGIgKyAiJyIpOworICAgIH0KIH0KIAogZnVuY3Rpb24gc2hvdWxkQmVUcnVl
KHMpIHsKQEAgLTY4LDE1ICs3MCwxNSBAQCBydW5UZXN0U2hvdWxkVGhyb3coIkEiKTsKIHJ1blRl
c3RTaG91bGRUaHJvdygiY2xhc3Mge30iKTsKIHJ1blRlc3RTaG91bGRUaHJvdygiY2xhc3MgeyBj
b25zdHJ1Y3RvcigpIHt9IH0iKTsKIHJ1blRlc3RTaG91bGROb3RUaHJvdygiY2xhc3MgQSB7IGNv
bnN0cnVjdG9yKCkge30gfSIpOwotcnVuVGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEEoKSB7fSciKTsKK3J1blRlc3RT
aG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpIiwgIidj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JyIpOwogcnVuVGVzdFNob3VsZEJlVHJ1ZSgiY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEiKTsKLXJ1blRl
c3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH07
IChuZXcgQSkuYmFzZS50b1N0cmluZygpIiwgIidmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2UgPSBB
OyB9JyIpOworcnVuVGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMu
YmFzZSA9IEE7IH0gfTsgKG5ldyBBKS5iYXNlLnRvU3RyaW5nKCkiLCAiJ2NsYXNzIEEgeyBjb25z
dHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9JyIpOwogcnVuVGVzdFNob3VsZE5vdFRocm93
KCJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7fTsiKTsK
LXJ1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBl
eHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIudG9TdHJpbmcoKSIsICInZnVuY3Rpb24g
QigpIHt9JyIpOworcnVuVGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9
OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQi50b1N0cmluZygpIiwg
IidjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsKIHJ1blRlc3RTaG91
bGRCZVRydWUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBB
IHt9OyAobmV3IEIpIGluc3RhbmNlb2YgQSIpOwogcnVuVGVzdFNob3VsZEJlVHJ1ZSgiY2xhc3Mg
QSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307IChuZXcgQikgaW5z
dGFuY2VvZiBCIik7Ci1ydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9
IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFz
ZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5iYXNlLnRvU3RyaW5nKCkiLCAi
J2Z1bmN0aW9uIEEoKSB7fSciKTsKLXJ1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsg
dGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAobmV3IEIpLmRlcml2ZWQudG9T
dHJpbmcoKSIsICInZnVuY3Rpb24gQigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5k
ZXJpdmVkID0gQjsgfSciKTsKK3J1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhp
cy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAobmV3IEIpLmJhc2UudG9TdHJpbmco
KSIsICInY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsKK3J1blRlc3RTaG91bGRCZSgi
Y2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAo
bmV3IEIpLmRlcml2ZWQudG9TdHJpbmcoKSIsICInY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9JyIp
OwogCiAvLyBDbGFzcyBleHByZXNzaW9uLiBDbGFzcyBuYW1lIG5vdCBhZGRlZCB0byBzY29wZS4g
Q2xhc3MgbmFtZSBpcyBhdmFpbGFibGUgaW5zaWRlIGNsYXNzIHNjb3BlLgogZGVidWcoJycpOyBk
ZWJ1ZygnQ2xhc3MgZXhwcmVzc2lvbicpOwpAQCAtOTAsMjkgKzkyLDI5IEBAIHJ1blRlc3RTaG91
bGRUaHJvdygiKGNsYXNzIEEge30pOyBBIik7CiBydW5UZXN0U2hvdWxkTm90VGhyb3coIm5ldyAo
Y2xhc3MgQSB7fSkiKTsKIHJ1blRlc3RTaG91bGRCZSgidHlwZW9mIChuZXcgKGNsYXNzIEEge30p
KSIsICcib2JqZWN0IicpOwogcnVuVGVzdFNob3VsZE5vdFRocm93KCIobmV3IChjbGFzcyBBIHsg
Y29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSkpLmJhc2UiKTsKLXJ1blRlc3RTaG91
bGRCZSgiKG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0p
KS5iYXNlLnRvU3RyaW5nKCkiLCAnImZ1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0iJyk7
CitydW5UZXN0U2hvdWxkQmUoIihuZXcgKGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5i
YXNlID0gQTsgfSB9KSkuYmFzZS50b1N0cmluZygpIiwgJyJjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7IHRoaXMuYmFzZSA9IEE7IH0gfSInKTsKIHJ1blRlc3RTaG91bGROb3RUaHJvdygiY2xhc3Mg
QSB7fTsgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9KSIpOwogcnVuVGVzdFNob3VsZFRocm93KCJjbGFz
cyBBIHt9OyAoY2xhc3MgQiBleHRlbmRzIEEge30pOyBCIik7CiBydW5UZXN0U2hvdWxkTm90VGhy
b3coImNsYXNzIEEge307IG5ldyAoY2xhc3MgQiBleHRlbmRzIEEge30pIik7CiBydW5UZXN0U2hv
dWxkTm90VGhyb3coImNsYXNzIEEge307IG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSIp
OwogcnVuVGVzdFNob3VsZEJlVHJ1ZSgiY2xhc3MgQSB7fTsgKG5ldyAoY2xhc3MgQiBleHRlbmRz
IEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVk
ID0gQjsgfSB9KSkgaW5zdGFuY2VvZiBBIik7Ci1ydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3Io
KSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmJhc2Uu
dG9TdHJpbmcoKSIsICInZnVuY3Rpb24gQSgpIHt9JyIpOwotcnVuVGVzdFNob3VsZEJlKCJjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0
cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0p
KS5kZXJpdmVkLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEIoKSB7IHN1cGVyKCk7IHRoaXMuYmFz
ZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0nIik7CitydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0
b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmJh
c2UudG9TdHJpbmcoKSIsICInY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsKK3J1blRl
c3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyAoY2xhc3MgQiBl
eHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5k
ZXJpdmVkID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmluZygpIiwgIidjbGFzcyBCIGV4dGVuZHMg
QSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQg
PSBCOyB9IH0nIik7CiAKIC8vIEFzc2lnbm1lbnQgb2YgYSBjbGFzcyBleHByZXNzaW9uIHRvIGEg
dmFyaWFibGUuIFZhcmlhYmxlIG5hbWUgYXZhaWxhYmxlIGluIHNjb3BlLCBjbGFzcyBuYW1lIGlz
IG5vdC4gQ2xhc3MgbmFtZSBpcyBhdmFpbGFibGUgaW5zaWRlIGNsYXNzIHNjb3BlLgogZGVidWco
JycpOyBkZWJ1ZygnQ2xhc3MgZXhwcmVzc2lvbiBhc3NpZ25tZW50IHRvIHZhcmlhYmxlJyk7CiBy
dW5UZXN0U2hvdWxkVGhyb3coIkEiKTsKIHJ1blRlc3RTaG91bGROb3RUaHJvdygidmFyIFZhckEg
PSBjbGFzcyB7fSIpOwotcnVuVGVzdFNob3VsZEJlKCJ2YXIgVmFyQSA9IGNsYXNzIHsgY29uc3Ry
dWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uICgpIHt9JyIpOworcnVu
VGVzdFNob3VsZEJlKCJ2YXIgVmFyQSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJB
LnRvU3RyaW5nKCkiLCAiJ2NsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9JyIpOwogcnVuVGVzdFNo
b3VsZFRocm93KCJWYXJBIik7CiBydW5UZXN0U2hvdWxkTm90VGhyb3coInZhciBWYXJBID0gY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfSIpOwotcnVuVGVzdFNob3VsZEJlKCJ2YXIgVmFyQSA9
IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IFZhckEudG9TdHJpbmcoKSIsICInZnVuY3Rp
b24gQSgpIHt9JyIpOworcnVuVGVzdFNob3VsZEJlKCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25z
dHJ1Y3RvcigpIHt9IH07IFZhckEudG9TdHJpbmcoKSIsICInY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkge30gfSciKTsKIHJ1blRlc3RTaG91bGRUaHJvdygidmFyIFZhckEgPSBjbGFzcyBBIHsgY29u
c3RydWN0b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCkiKTsKIHJ1blRlc3RTaG91bGRCZVRydWUoInZh
ciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyBWYXJBKSBpbnN0YW5j
ZW9mIFZhckEiKTsKLXJ1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3Ry
dWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCki
LCAiJ2Z1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0nIik7CitydW5UZXN0U2hvdWxkQmUo
InZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH07
IChuZXcgVmFyQSkuYmFzZS50b1N0cmluZygpIiwgIidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
IHRoaXMuYmFzZSA9IEE7IH0gfSciKTsKIHJ1blRlc3RTaG91bGROb3RUaHJvdygidmFyIFZhckEg
PSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5k
cyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyIpOwogcnVuVGVzdFNob3VsZFRocm93KCJ2YXIg
VmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBl
eHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIiKTsKLXJ1blRlc3RTaG91bGRCZSgi
dmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNz
IEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJCLnRvU3RyaW5nKCkiLCAi
J2Z1bmN0aW9uIEIoKSB7fSciKTsKK3J1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFzcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsg
Y29uc3RydWN0b3IoKSB7fSB9OyBWYXJCLnRvU3RyaW5nKCkiLCAiJ2NsYXNzIEIgZXh0ZW5kcyBW
YXJBIHsgY29uc3RydWN0b3IoKSB7fSB9JyIpOwogcnVuVGVzdFNob3VsZEJlVHJ1ZSgidmFyIFZh
ckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0
ZW5kcyBWYXJBIHsgfTsgKG5ldyBWYXJCKSBpbnN0YW5jZW9mIFZhckEiKTsKIHJ1blRlc3RTaG91
bGRCZVRydWUoInZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZh
ckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IH07IChuZXcgVmFyQikgaW5zdGFuY2VvZiBWYXJC
Iik7CiBydW5UZXN0U2hvdWxkQmVUcnVlKCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3Rv
cigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3Rvcigp
IHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gVmFyQTsgdGhpcy5kZXJpdmVkID0gQjsgdGhpcy5kZXJp
dmVkVmFyID0gVmFyQjsgfSB9OyAobmV3IFZhckIpLmJhc2UgPT09IFZhckEiKTsKQEAgLTEyOCw1
ICsxMzAsNSBAQCBydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpCiBydW5U
ZXN0U2hvdWxkTm90VGhyb3coImNsYXNzIEEge307IHZhciByZXN1bHQgPSBBOyByZXN1bHQiKTsK
IHNob3VsZEJlKCJldmFsKCd2YXIgRm9vID0gMTAnKTsgRm9vIiwgIjEwIik7CiBzaG91bGRUaHJv
dygiJ3VzZSBzdHJpY3QnOyBldmFsKCd2YXIgRm9vID0gMTAnKTsgRm9vIik7Ci1zaG91bGRCZSgi
ZXZhbCgnY2xhc3MgQmFyIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCYXIudG9TdHJpbmcoKScpOyIs
ICInZnVuY3Rpb24gQmFyKCkge30nIik7CitzaG91bGRCZSgiZXZhbCgnY2xhc3MgQmFyIHsgY29u
c3RydWN0b3IoKSB7fSB9OyBCYXIudG9TdHJpbmcoKScpOyIsICInY2xhc3MgQmFyIHsgY29uc3Ry
dWN0b3IoKSB7fSB9JyIpOwogc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZXZhbCgnY2xhc3Mg
QmFyIHsgY29uc3RydWN0b3IoKSB7fSB9Jyk7IEJhci50b1N0cmluZygpIik7CkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctdnMtbmFtZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmct
dnMtbmFtZS5qcwkocmV2aXNpb24gMTk3OTcwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Z1bmN0aW9uLXRvU3RyaW5nLXZzLW5hbWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2
ICsyMTgsMjAwIEBAIHNlY3Rpb24gPSAib2JqZWN0IHNob3J0aGFuZCBtZXRob2QiOwogICAgIH0K
IH0KIAorc2VjdGlvbiA9ICJjbGFzcyBmcm9tIHN0YXRlbWVudCI7CisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIGZvbyB7fQorICAgIGNsYXNzIGJhciB7fQorICAgIGNsYXNzIGJheCB7IHN0YXRp
YyBuYW1lKCkge30gfQorICAgIGxldCBiYXogPSBiYXI7CisgICAgY2xhc3MgZ29vIGV4dGVuZHMg
Zm9vIHt9CisKKyAgICB0ZXN0KGZvbywgImZvbyIsICJjbGFzcyBmb28ge30iKTsKKyAgICB0ZXN0
KGJhciwgImJhciIsICJjbGFzcyBiYXIge30iKTsKKyAgICBzaG91bGRCZSgidHlwZW9mIGJheC5u
YW1lIG9mICIsICJiYXgiLCB0eXBlb2YgYmF4Lm5hbWUsICJmdW5jdGlvbiIpOworICAgIHNob3Vs
ZEJlKCJ0b1N0cmluZyBvZiAiLCAiYmF4IiwgYmF4LnRvU3RyaW5nKCksICJjbGFzcyBiYXggeyBz
dGF0aWMgbmFtZSgpIHt9IH0iKTsKKyAgICB0ZXN0KGJheiwgImJhciIsICJjbGFzcyBiYXIge30i
KTsKKyAgICB0ZXN0KGdvbywgImdvbyIsICJjbGFzcyBnb28gZXh0ZW5kcyBmb28ge30iKTsKKwor
ICAgIHNlY3Rpb24gPSAiYm91bmQgY2xhc3MgZnJvbSBzdGF0ZW1lbnQiOworICAgIHsKKyAgICAg
ICAgbGV0IGJvdW5kMSA9IGZvby5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDEsICJib3Vu
ZCBmb28iLCAiZnVuY3Rpb24gZm9vKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0
IGJvdW5kMiA9IGJhci5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDIsICJib3VuZCBiYXIi
LCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5k
MyA9IGJheC5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDMsICJib3VuZCAiLCAiZnVuY3Rp
b24oKSB7IFtuYXRpdmUgY29kZV0gfSIpOyAvLyBiYXgubmFtZSBpcyBub3QgYSBzdHJpbmcuCisg
ICAgICAgIGxldCBib3VuZDQgPSBiYXouYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ0LCAi
Ym91bmQgYmFyIiwgImZ1bmN0aW9uIGJhcigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAg
IGxldCBib3VuZDUgPSBnb28uYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ1LCAiYm91bmQg
Z29vIiwgImZ1bmN0aW9uIGdvbygpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgfQorfSkoKTsK
Kworc2VjdGlvbiA9ICJjbGFzcyB3aXRoIGNvbnN0cnVjdG9yIGZyb20gc3RhdGVtZW50IjsKKyhm
dW5jdGlvbiAoKSB7CisgICAgY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkge30gfQorICAgIGNs
YXNzIGJhciB7IGNvbnN0cnVjdG9yKCkge30gfQorICAgIGNsYXNzIGJheCB7IHN0YXRpYyBuYW1l
KCkge30gY29uc3RydWN0b3IoKSB7fSB9CisgICAgbGV0IGJheiA9IGJhcjsKKyAgICBjbGFzcyBn
b28gZXh0ZW5kcyBmb28geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoNSk7IH0gfQorCisgICAgdGVz
dChmb28sICJmb28iLCAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkge30gfSIpOworICAgIHRl
c3QoYmFyLCAiYmFyIiwgImNsYXNzIGJhciB7IGNvbnN0cnVjdG9yKCkge30gfSIpOworICAgIHNo
b3VsZEJlKCJ0eXBlb2YgYmF4Lm5hbWUgb2YgIiwgImJheCIsIHR5cGVvZiBiYXgubmFtZSwgImZ1
bmN0aW9uIik7CisgICAgc2hvdWxkQmUoInRvU3RyaW5nIG9mICIsICJiYXgiLCBiYXgudG9TdHJp
bmcoKSwgImNsYXNzIGJheCB7IHN0YXRpYyBuYW1lKCkge30gY29uc3RydWN0b3IoKSB7fSB9Iik7
CisgICAgdGVzdChiYXosICJiYXIiLCAiY2xhc3MgYmFyIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7
CisgICAgdGVzdChnb28sICJnb28iLCAiY2xhc3MgZ29vIGV4dGVuZHMgZm9vIHsgY29uc3RydWN0
b3IoKSB7IHN1cGVyKDUpOyB9IH0iKTsKKworICAgIHNlY3Rpb24gPSAiYm91bmQgY2xhc3Mgd2l0
aCBjb25zdHJ1Y3RvciBmcm9tIHN0YXRlbWVudCI7CisgICAgeworICAgICAgICBsZXQgYm91bmQx
ID0gZm9vLmJpbmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kMSwgImJvdW5kIGZvbyIsICJmdW5j
dGlvbiBmb28oKSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQyID0gYmFy
LmJpbmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kMiwgImJvdW5kIGJhciIsICJmdW5jdGlvbiBi
YXIoKSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQzID0gYmF4LmJpbmQo
e30pOworICAgICAgICB0ZXN0KGJvdW5kMywgImJvdW5kICIsICJmdW5jdGlvbigpIHsgW25hdGl2
ZSBjb2RlXSB9Iik7IC8vIGJheC5uYW1lIGlzIG5vdCBhIHN0cmluZy4KKyAgICAgICAgbGV0IGJv
dW5kNCA9IGJhei5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDQsICJib3VuZCBiYXIiLCAi
ZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kNSA9
IGdvby5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDUsICJib3VuZCBnb28iLCAiZnVuY3Rp
b24gZ29vKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICB9Cit9KSgpOworCitzZWN0aW9uID0g
ImNsYXNzIGZyb20gZXhwcmVzc2lvbiI7CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmb28gPSBj
bGFzcyBuYW1lZEZvbyB7fQorICAgIGxldCBiYXIgPSBjbGFzcyB7fQorICAgIGxldCBiYXggPSBj
bGFzcyB7IHN0YXRpYyBuYW1lKCkge30gfQorICAgIGxldCBiYXogPSBiYXI7CisgICAgbGV0IGdv
byA9IGNsYXNzIGV4dGVuZHMgZm9vIHt9CisKKyAgICB0ZXN0KGZvbywgIm5hbWVkRm9vIiwgImNs
YXNzIG5hbWVkRm9vIHt9Iik7CisgICAgdGVzdChiYXIsICJiYXIiLCAiY2xhc3Mge30iKTsKKyAg
ICBzaG91bGRCZSgidHlwZW9mIGJheC5uYW1lIG9mICIsICJiYXgiLCB0eXBlb2YgYmF4Lm5hbWUs
ICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJ0b1N0cmluZyBvZiAiLCAiYmF4IiwgYmF4LnRv
U3RyaW5nKCksICJjbGFzcyB7IHN0YXRpYyBuYW1lKCkge30gfSIpOworICAgIHRlc3QoYmF6LCAi
YmFyIiwgImNsYXNzIHt9Iik7CisgICAgdGVzdChnb28sICJnb28iLCAiY2xhc3MgZXh0ZW5kcyBm
b28ge30iKTsKKworICAgIHNlY3Rpb24gPSAiYm91bmQgY2xhc3MgZnJvbSBleHByZXNzaW9uIjsK
KyAgICB7CisgICAgICAgIGxldCBib3VuZDEgPSBmb28uYmluZCh7fSk7CisgICAgICAgIHRlc3Qo
Ym91bmQxLCAiYm91bmQgbmFtZWRGb28iLCAiZnVuY3Rpb24gbmFtZWRGb28oKSB7IFtuYXRpdmUg
Y29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQyID0gYmFyLmJpbmQoe30pOworICAgICAgICB0
ZXN0KGJvdW5kMiwgImJvdW5kIGJhciIsICJmdW5jdGlvbiBiYXIoKSB7IFtuYXRpdmUgY29kZV0g
fSIpOworICAgICAgICBsZXQgYm91bmQzID0gYmF4LmJpbmQoe30pOworICAgICAgICB0ZXN0KGJv
dW5kMywgImJvdW5kICIsICJmdW5jdGlvbigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7IC8vIGJheC5u
YW1lIGlzIG5vdCBhIHN0cmluZy4KKyAgICAgICAgbGV0IGJvdW5kNCA9IGJhei5iaW5kKHt9KTsK
KyAgICAgICAgdGVzdChib3VuZDQsICJib3VuZCBiYXIiLCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0
aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kNSA9IGdvby5iaW5kKHt9KTsKKyAgICAg
ICAgdGVzdChib3VuZDUsICJib3VuZCBnb28iLCAiZnVuY3Rpb24gZ29vKCkgeyBbbmF0aXZlIGNv
ZGVdIH0iKTsKKyAgICB9Cit9KSgpOworCitzZWN0aW9uID0gImNsYXNzIHdpdGggY29uc3RydWN0
b3IgZnJvbSBleHByZXNzaW9uIjsKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZvbyA9IGNsYXNz
IG5hbWVkRm9vIHsgY29uc3RydWN0b3IoeCkge30gfQorICAgIGxldCBiYXIgPSBjbGFzcyB7IGNv
bnN0cnVjdG9yKCkge30gfQorICAgIGxldCBiYXggPSBjbGFzcyB7IHN0YXRpYyBuYW1lKCkge30g
Y29uc3RydWN0b3IoKSB7fSB9CisgICAgbGV0IGJheiA9IGJhcjsKKyAgICBsZXQgZ29vID0gY2xh
c3MgZXh0ZW5kcyBmb28geyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoeCkgfSB9CisKKyAgICB0ZXN0
KGZvbywgIm5hbWVkRm9vIiwgImNsYXNzIG5hbWVkRm9vIHsgY29uc3RydWN0b3IoeCkge30gfSIp
OworICAgIHRlc3QoYmFyLCAiYmFyIiwgImNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7Cisg
ICAgc2hvdWxkQmUoInR5cGVvZiBiYXgubmFtZSBvZiAiLCAiYmF4IiwgdHlwZW9mIGJheC5uYW1l
LCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZSgidG9TdHJpbmcgb2YgIiwgImJheCIsIGJheC50
b1N0cmluZygpLCAiY2xhc3MgeyBzdGF0aWMgbmFtZSgpIHt9IGNvbnN0cnVjdG9yKCkge30gfSIp
OworICAgIHRlc3QoYmF6LCAiYmFyIiwgImNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7Cisg
ICAgdGVzdChnb28sICJnb28iLCAiY2xhc3MgZXh0ZW5kcyBmb28geyBjb25zdHJ1Y3RvcigpIHsg
c3VwZXIoeCkgfSB9Iik7CisKKyAgICBzZWN0aW9uID0gImJvdW5kIGNsYXNzIHdpdGggY29uc3Ry
dWN0b3IgZnJvbSBleHByZXNzaW9uIjsKKyAgICB7CisgICAgICAgIGxldCBib3VuZDEgPSBmb28u
YmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQxLCAiYm91bmQgbmFtZWRGb28iLCAiZnVuY3Rp
b24gbmFtZWRGb28oKSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQyID0g
YmFyLmJpbmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kMiwgImJvdW5kIGJhciIsICJmdW5jdGlv
biBiYXIoKSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQzID0gYmF4LmJp
bmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kMywgImJvdW5kICIsICJmdW5jdGlvbigpIHsgW25h
dGl2ZSBjb2RlXSB9Iik7IC8vIGJheC5uYW1lIGlzIG5vdCBhIHN0cmluZy4KKyAgICAgICAgbGV0
IGJvdW5kNCA9IGJhei5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDQsICJib3VuZCBiYXIi
LCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5k
NSA9IGdvby5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDUsICJib3VuZCBnb28iLCAiZnVu
Y3Rpb24gZ29vKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICB9Cit9KSgpOworCitzZWN0aW9u
ID0gImNsYXNzIGluIG9iamVjdCBwcm9wZXJ0eSI7CisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IGdvb0Jhc2Uge30KKyAgICBsZXQgbyA9IHsKKyAgICAgICAgZm9vOiBjbGFzcyB7fSwKKyAgICAg
ICAgYmFyOiBjbGFzcyB7fSwKKyAgICAgICAgYmF4OiBjbGFzcyB7IHN0YXRpYyBuYW1lKCkge30g
fSwKKyAgICAgICAgZ29vOiBjbGFzcyBleHRlbmRzIGdvb0Jhc2Uge30sCisgICAgfTsKKyAgICBv
LmJheSA9IG8uYmFyOworICAgIG8uYmF6ID0gY2xhc3Mge307CisKKyAgICB0ZXN0KG8uZm9vLCAi
Zm9vIiwgImNsYXNzIHt9Iik7CisgICAgdGVzdChvLmJhciwgImJhciIsICJjbGFzcyB7fSIpOwor
ICAgIHNob3VsZEJlKCJ0eXBlb2Ygby5iYXgubmFtZSBvZiAiLCAiby5iYXgiLCB0eXBlb2Ygby5i
YXgubmFtZSwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmUoInRvU3RyaW5nIG9mICIsICJvLmJh
eCIsIG8uYmF4LnRvU3RyaW5nKCksICJjbGFzcyB7IHN0YXRpYyBuYW1lKCkge30gfSIpOworICAg
IHRlc3Qoby5iYXksICJiYXIiLCAiY2xhc3Mge30iKTsKKyAgICB0ZXN0KG8uYmF6LCAiIiwgImNs
YXNzIHt9Iik7CisgICAgdGVzdChvLmdvbywgImdvbyIsICJjbGFzcyBleHRlbmRzIGdvb0Jhc2Ug
e30iKTsKKworICAgIHNlY3Rpb24gPSAiYm91bmQgY2xhc3MgaW4gb2JqZWN0IHByb3BlcnR5IjsK
KyAgICB7CisgICAgICAgIGxldCBib3VuZDEgPSBvLmZvby5iaW5kKHt9KTsKKyAgICAgICAgdGVz
dChib3VuZDEsICJib3VuZCBmb28iLCAiZnVuY3Rpb24gZm9vKCkgeyBbbmF0aXZlIGNvZGVdIH0i
KTsKKyAgICAgICAgbGV0IGJvdW5kMiA9IG8uYmFyLmJpbmQoe30pOworICAgICAgICB0ZXN0KGJv
dW5kMiwgImJvdW5kIGJhciIsICJmdW5jdGlvbiBiYXIoKSB7IFtuYXRpdmUgY29kZV0gfSIpOwor
ICAgICAgICBsZXQgYm91bmQzID0gby5iYXguYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQz
LCAiYm91bmQgIiwgImZ1bmN0aW9uKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsgLy8gYmF4Lm5hbWUg
aXMgbm90IGEgc3RyaW5nLgorICAgICAgICBsZXQgYm91bmQ0ID0gby5iYXkuYmluZCh7fSk7Cisg
ICAgICAgIHRlc3QoYm91bmQ0LCAiYm91bmQgYmFyIiwgImZ1bmN0aW9uIGJhcigpIHsgW25hdGl2
ZSBjb2RlXSB9Iik7CisgICAgICAgIGxldCBib3VuZDUgPSBvLmJhei5iaW5kKHt9KTsKKyAgICAg
ICAgdGVzdChib3VuZDUsICJib3VuZCAiLCAiZnVuY3Rpb24oKSB7IFtuYXRpdmUgY29kZV0gfSIp
OworICAgICAgICBsZXQgYm91bmQ2ID0gby5nb28uYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91
bmQ2LCAiYm91bmQgZ29vIiwgImZ1bmN0aW9uIGdvbygpIHsgW25hdGl2ZSBjb2RlXSB9Iik7Cisg
ICAgfQorfSkoKTsKKworc2VjdGlvbiA9ICJjbGFzcyB3aXRoIGNvbnN0cnVjdG9yIGluIG9iamVj
dCBwcm9wZXJ0eSI7CisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIGdvb0Jhc2UgeyBjb25zdHJ1
Y3Rvcih4KSB7fSB9CisgICAgbGV0IG8gPSB7CisgICAgICAgIGZvbzogY2xhc3MgeyBjb25zdHJ1
Y3Rvcih4KSB7fSB9LAorICAgICAgICBiYXI6IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9LAor
ICAgICAgICBiYXg6IGNsYXNzIHsgc3RhdGljIG5hbWUoKSB7fSBjb25zdHJ1Y3RvcigpIHt9IH0s
CisgICAgICAgIGdvbzogY2xhc3MgZXh0ZW5kcyBnb29CYXNlIHsgY29uc3RydWN0b3IoKSB7IHN1
cGVyKDUpOyB9IH0sCisgICAgfTsKKyAgICBvLmJheSA9IG8uYmFyOworICAgIG8uYmF6ID0gY2xh
c3MgeyBjb25zdHJ1Y3RvcigpIHt9IH07CisKKyAgICB0ZXN0KG8uZm9vLCAiZm9vIiwgImNsYXNz
IHsgY29uc3RydWN0b3IoeCkge30gfSIpOworICAgIHRlc3Qoby5iYXIsICJiYXIiLCAiY2xhc3Mg
eyBjb25zdHJ1Y3RvcigpIHt9IH0iKTsKKyAgICBzaG91bGRCZSgidHlwZW9mIG8uYmF4Lm5hbWUg
b2YgIiwgIm8uYmF4IiwgdHlwZW9mIG8uYmF4Lm5hbWUsICJmdW5jdGlvbiIpOworICAgIHNob3Vs
ZEJlKCJ0b1N0cmluZyBvZiAiLCAiby5iYXgiLCBvLmJheC50b1N0cmluZygpLCAiY2xhc3MgeyBz
dGF0aWMgbmFtZSgpIHt9IGNvbnN0cnVjdG9yKCkge30gfSIpOworICAgIHRlc3Qoby5iYXksICJi
YXIiLCAiY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHt9IH0iKTsKKyAgICB0ZXN0KG8uYmF6LCAiIiwg
ImNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7CisgICAgdGVzdChvLmdvbywgImdvbyIsICJj
bGFzcyBleHRlbmRzIGdvb0Jhc2UgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoNSk7IH0gfSIpOwor
CisgICAgc2VjdGlvbiA9ICJib3VuZCBjbGFzcyB3aXRoIGNvbnN0cnVjdG9yIGluIG9iamVjdCBw
cm9wZXJ0eSI7CisgICAgeworICAgICAgICBsZXQgYm91bmQxID0gby5mb28uYmluZCh7fSk7Cisg
ICAgICAgIHRlc3QoYm91bmQxLCAiYm91bmQgZm9vIiwgImZ1bmN0aW9uIGZvbygpIHsgW25hdGl2
ZSBjb2RlXSB9Iik7CisgICAgICAgIGxldCBib3VuZDIgPSBvLmJhci5iaW5kKHt9KTsKKyAgICAg
ICAgdGVzdChib3VuZDIsICJib3VuZCBiYXIiLCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNv
ZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kMyA9IG8uYmF4LmJpbmQoe30pOworICAgICAgICB0
ZXN0KGJvdW5kMywgImJvdW5kICIsICJmdW5jdGlvbigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7IC8v
IGJheC5uYW1lIGlzIG5vdCBhIHN0cmluZy4KKyAgICAgICAgbGV0IGJvdW5kNCA9IG8uYmF5LmJp
bmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kNCwgImJvdW5kIGJhciIsICJmdW5jdGlvbiBiYXIo
KSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQ1ID0gby5iYXouYmluZCh7
fSk7CisgICAgICAgIHRlc3QoYm91bmQ1LCAiYm91bmQgIiwgImZ1bmN0aW9uKCkgeyBbbmF0aXZl
IGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kNiA9IG8uZ29vLmJpbmQoe30pOworICAgICAg
ICB0ZXN0KGJvdW5kNiwgImJvdW5kIGdvbyIsICJmdW5jdGlvbiBnb28oKSB7IFtuYXRpdmUgY29k
ZV0gfSIpOworICAgIH0KK30pKCk7CisKIC8vIEZJWE1FOiBVbmNvbW1lbnQgdGhlc2Ugd2hlbiB3
ZSd2ZSBhZGRlZCBzdXBwb3J0IGZvciBGdW5jdGlvbi5uYW1lIG9mIGNvbXB1dGVkIHByb3BlcnRp
ZXMuCiAvLyBzZWN0aW9uID0gIk9iamVjdCBjb21wdXRlZCBzdHJpbmcgcHJvcGVydHkiOwogLy8g
ewpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUt
b2JqZWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
OTc5NzApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaW5zcGVjdG9yL21vZGVsL3JlbW90
ZS1vYmplY3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NzQ4LDcgKzQ3NDgsNyBA
QCBFWFBSRVNTSU9OOiBQZXJzb24gPSBjbGFzcyBQZXJzb24geyBjb25zCiAgICAgIl9vYmplY3RJ
ZCI6ICI8ZmlsdGVyZWQ+IiwKICAgICAiX2Rlc2NyaXB0aW9uIjogIlBlcnNvbiIKICAgfSwKLSAg
Il9mdW5jdGlvbkRlc2NyaXB0aW9uIjogImZ1bmN0aW9uIFBlcnNvbihuYW1lKXt9IgorICAiX2Z1
bmN0aW9uRGVzY3JpcHRpb24iOiAiY2xhc3MgUGVyc29uIHsgY29uc3RydWN0b3IobmFtZSl7fSBn
ZXQgZnVsbE5hbWUoKXt9IG1ldGhvZE5hbWUocDEsIHAyKXt9IH0iCiB9CiAKIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NzcxLDcgKzQ3
NzEsNyBAQCBFWFBSRVNTSU9OOiBBbHBoYSA9IGNsYXNzIEEgeyBtZXRob2RBKCl7CiAgICAgIl9v
YmplY3RJZCI6ICI8ZmlsdGVyZWQ+IiwKICAgICAiX2Rlc2NyaXB0aW9uIjogIkIiCiAgIH0sCi0g
ICJfZnVuY3Rpb25EZXNjcmlwdGlvbiI6ICJmdW5jdGlvbiBCKCkgeyBzdXBlciguLi5hcmd1bWVu
dHMpOyB9IgorICAiX2Z1bmN0aW9uRGVzY3JpcHRpb24iOiAiY2xhc3MgQiBleHRlbmRzIEFscGhh
IHsgbWV0aG9kQigpe30gfSIKIH0KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>
<flag name="commit-queue"
          id="298283"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273755</attachid>
            <date>2016-03-11 12:59:15 -0800</date>
            <delta_ts>2016-03-11 13:02:10 -0800</delta_ts>
            <desc>proposed patch with more tests, some additional comments, + darin&apos;s feedback.</desc>
            <filename>bug-155336.patch</filename>
            <type>text/plain</type>
            <size>70846</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNyBA
QAorMjAxNi0wMy0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IEZ1bmN0aW9uLm5hbWUgYW5kIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBFUzYgY2xh
c3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUz
MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
b25seSB0aGluZyB0aGF0IHRoZSBFUzYgc3BlYyBzYXlzIGFib3V0IHRvU3RyaW5nIHdpdGggcmVn
YXJkcyB0byBjbGFzcworICAgICAgICBvYmplY3RzIGlzOgorCisgICAgICAgICJUaGUgc3RyaW5n
IHJlcHJlc2VudGF0aW9uIG11c3QgaGF2ZSB0aGUgc3ludGF4IG9mIGEgRnVuY3Rpb25EZWNsYXJh
dGlvbiwKKyAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uLCBHZW5lcmF0b3JEZWNsYXJhdGlvbiwg
R2VuZXJhdG9yRXhwcmVzc2lvbiwgQ2xhc3NEZWNsYXJhdGlvbiwKKyAgICAgICAgQ2xhc3NFeHBy
ZXNzaW9uLCBBcnJvd0Z1bmN0aW9uLCBNZXRob2REZWZpbml0aW9uLCBvciBHZW5lcmF0b3JNZXRo
b2QgZGVwZW5kaW5nCisgICAgICAgIHVwb24gdGhlIGFjdHVhbCBjaGFyYWN0ZXJpc3RpY3Mgb2Yg
dGhlIG9iamVjdC4iCisKKyAgICAgICAgUHJldmlvdXNseSwgaW52b2tpbmcgdG9TdHJpbmcoKSBv
biBhIGNsYXNzIG9iamVjdCB3aWxsIHJldHVybiB0aGUgZnVuY3Rpb24KKyAgICAgICAgc291cmNl
IHN0cmluZyBvZiB0aGUgY2xhc3MnIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAgVGhpcyBkb2VzIG5v
dCBjb25mb3JtIHRvIHRoZQorICAgICAgICBzcGVjIGluIHRoYXQgdGhlIHRvU3RyaW5nIHN0cmlu
ZyBmb3IgYSBjbGFzcyBkb2VzIG5vdCBoYXZlIHRoZSBzeW50YXggb2YgYQorICAgICAgICBDbGFz
c0RlY2xhcmF0aW9uIG9yIENsYXNzRXhwcmVzc2lvbi4KKworICAgICAgICBUaGlzIGlzIG5vdyBm
aXhlZCBieSBkb2luZyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIEFkZGVkICJtX2NsYXNz
U291cmNlIiB0byBGdW5jdGlvbkV4ZWN1dGFibGUgKGFuZCBjb3JyZXNwb25kaW5nbHkgdG8KKyAg
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
LCBhbmQgQ2xhc3NFeHByTm9kZSkuCisgICAgICAgICAgIG1fY2xhc3NTb3VyY2UgaXMgdGhlIFNv
dXJjZUNvZGUgZm9yIHRoZSBjb2RlIHJhbmdlICJjbGFzcyAuLi4geyAuLi4gfSIuCisKKyAgICAg
ICAgICAgU2luY2UgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGlzIHRoZSBpbiBtZW1v
cnkgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgICAgIGNsYXNzIG9iamVjdCwgb25seSBj
bGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgd2lsbCBoYXZlIGl0cyBtX2NsYXNzU291cmNlCisg
ICAgICAgICAgIHNldC4gIG1fY2xhc3NTb3VyY2Ugd2lsbCBiZSAibnVsbCIgKGJ5IGRlZmF1bHQp
IGZvciBhbGwgb3RoZXIgZnVuY3Rpb25zLgorICAgICAgICAgICBUaGlzIGlzIGhvdyB3ZSBrbm93
IGlmIGEgRnVuY3Rpb25FeGVjdXRhYmxlIGlzIGZvciBhIGNsYXNzLgorCisgICAgICAgICAgIE5v
dGU6IEZ1bmN0aW9uRXhlY3V0YWJsZSBkb2VzIG5vdCBoYXZlIGl0cyBvd24gbV9jbGFzc1NvdXJj
ZS4gIEl0IGFsd2F5cyBnZXRzCisgICAgICAgICAgIGl0IGZyb20gaXRzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLiAgVGhpcyBpcyBvayB0byBkbyBiZWNhdXNlIG91ciBDb2RlQ2FjaGUKKyAg
ICAgICAgICAgY3VycmVudGx5IGRvZXMgbm90IGNhY2hlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlcyBmb3IgY2xhc3MgY29uc3RydWN0b3JzLgorCisgICAgICAgIDIuIFRoZSBDbGFzc0V4cHJO
b2RlIG5vdyB0cmFja3MgdGhlIFNvdXJjZUNvZGUgcmFuZ2UgZm9yIHRoZSBjbGFzcyBleHByZXNz
aW9uLgorICAgICAgICAgICBUaGlzIGlzIHVzZWQgdG8gc2V0IG1fY2xhc3NTb3VyY2UgaW4gdGhl
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGF0CisgICAgICAgICAgIGJ5dGVjb2RlIGdlbmVy
YXRpb24gdGltZSwgYW5kIHRoZSBGdW5jdGlvbkV4ZWN1dGFibGUgbGF0ZXIgYXQgYnl0ZWNvZGUK
KyAgICAgICAgICAgbGlua2luZyB0aW1lLgorCisgICAgICAgIDMuIEZ1bmN0aW9uLnByb3RvdHlw
ZS50b1N0cmluZygpIG5vdyBjaGVja3MgaWYgdGhlIGZ1bmN0aW9uIGlzIGZvciBhIGNsYXNzLgor
ICAgICAgICAgICBJZiBzbywgaXQgcmV0dXJucyB0aGUgc3RyaW5nIGZvciB0aGUgY2xhc3Mgc291
cmNlIGluc3RlYWQgb2YganVzdCB0aGUKKyAgICAgICAgICAgZnVuY3Rpb24gc291cmNlIGZvciB0
aGUgY2xhc3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgICAgTm90ZTogdGhlIGNsYXNzIHNvdXJj
ZSBpcyBzdGF0aWMgZnJvbSB0aGUgdGltZSB0aGUgY2xhc3Mgd2FzIHBhcnNlZC4gIFRoaXMKKyAg
ICAgICAgICAgY2FuIGludHJvZHVjZXMgc29tZSB3ZWlyZG5lc3MgYXQgcnVudGltZS4gIENvbnNp
ZGVyIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgICAgICAgIHZhciB2MSA9IGNsYXNzIHt9Cisg
ICAgICAgICAgICAgICB2MS50b1N0cmluZygpOyAvLyB5aWVsZHMgImNsYXNzIHt9Ii4KKworICAg
ICAgICAgICAgICAgY2xhc3MgYzIgZXh0ZW5kcyB2MSB7fQorCisgICAgICAgICAgICAgICBjMi5f
X3Byb3RvX18gPT09IHYxOyAvLyB5aWVsZHMgdHJ1ZSBpLmUuIGMyIGV4dGVuZHMgdjEuCisgICAg
ICAgICAgICAgICBjMi50b1N0cmluZygpOyAvLyB5aWVsZHMgImNsYXNzIGMyIGV4dGVuZHMgdjEg
e30iIHdoaWNoIGlzIGZpbmUuCisKKyAgICAgICAgICAgICAgIHYxID0ge307IC8vIHBvaW50IHYx
IHRvIHNvbWV0aGluZyBlbHNlIG5vdy4KKworICAgICAgICAgICAgICAgYzIuX19wcm90b19fID09
PSB2MTsgLy8gbm93IHlpZWxkcyBmYWxzZSBpLmUuIGMyIG5vIGxvbmdlciBleHRlbmRzIHYxLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYzIgYWN0dWFsbHkgZXh0ZW5k
cyB0aGUgY2xhc3MgdGhhdCB2MSB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBwb2ludCB0bywgYnV0IC4uLgorICAgICAgICAgICAgICAgYzIudG9TdHJpbmco
KTsgLy8gc3RpbGwgeWllbGRzICJjbGFzcyBjMiBleHRlbmRzIHYxIHt9IiB3aGljaCBpcyBubyBs
b25nZXIgdHJ1ZS4KKworICAgICAgICAgICBJdCBpcyB1bmNsZWFyIGhvdyB3ZSBjYW4gYmVzdCBp
bXBsZW1lbnQgdG9TdHJpbmcoKSB0byBhdm9pZCB0aGlzIGlzc3VlLgorICAgICAgICAgICBUaGUg
YWJvdmUgYmVoYXZpb3IgaXMgaG93IENocm9tZSAoVmVyc2lvbiA1MS4wLjI2NzEuMCBjYW5hcnkg
KDY0LWJpdCkpCisgICAgICAgICAgIGN1cnJlbnRseSBpbXBsZW1lbnRzIHRvU3RyaW5nKCkgb2Yg
YSBjbGFzcywgYW5kIHdlIGRvIHRoZSBzYW1lIGluIHRoaXMgcGF0Y2guCisgICAgICAgICAgIElu
IEZpcmVmb3ggKDQ1LjApLCB0b1N0cmluZygpIG9mIGEgY2xhc3Mgd2lsbCB5aWVsZCB0aGUgZnVu
Y3Rpb24gc291cmNlIG9mIGl0CisgICAgICAgICAgIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLCB3aGlj
aCBpcyBub3QgYmV0dGVyLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGFsc28gYWRkZWQg
RVM2IGNvbXBsaWFuY2UgZm9yIEZ1bmN0aW9uLm5hbWUgb24gY2xhc3Mgb2JqZWN0czoKKworICAg
ICAgICA0LiBUaGUgQ2xhc3NFeHByTm9kZSBub3cgaGFzIGEgbV9lY21hTmFtZSBzdHJpbmcgZm9y
IHRyYWNraW5nIHRoZSBpbmZlcnJlZAorICAgICAgICAgICBuYW1lIG9mIGEgY2xhc3MgYWNjb3Jk
aW5nIHRvIHRoZSBFUzYgc3BlYy4gIFRoZSBBU1RCdWlsZGVyIG5vdyBtaXJyb3JzIGl0cworICAg
ICAgICAgICBoYW5kbGluZyBvZiBGdW5jRXhwck5vZGVzIHRvIENsYXNzRXhwck5vZGVzIGluIHNl
dHRpbmcgdGhlIG5vZGVzJyBtX2VjbWFOYW1lCisgICAgICAgICAgIHdoZXJlIHJlbGV2YW50Lgor
CisgICAgICAgICAgIFRoZSBtX2VjbWFOYW1lIGlzIGxhdGVyIHVzZWQgdG8gc2V0IHRoZSBtX2Vj
bWFOYW1lIG9mIHRoZSBGdW5jdGlvbkV4ZWN1dGFibGUKKyAgICAgICAgICAgb2YgdGhlIGNsYXNz
IGNvbnN0cnVjdG9yLCB3aGljaCBpbiB0dXJuIGlzIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGluaXRp
YWwgdmFsdWUKKyAgICAgICAgICAgb2YgdGhlIEZ1bmN0aW9uLm5hbWUgcHJvcGVydHkuCisKKyAg
ICAgICAgNS4gQWxzbyByZW5hbWVkIHNvbWUgdmFyaWFibGUgbmFtZXMgKC9tX21ldGFkYXRhL21l
dGFkYXRhLykgdG8gYmUgY29uc2lzdGVudCB3aXRoCisgICAgICAgICAgIHdlYmtpdCBuYW1pbmcg
Y29udmVudGlvbi4KKworICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0RlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2Vy
L0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVz
b2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVlpZWxkKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhc3NFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpCYXNl
RnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0V4cHJO
b2RlOjpGdW5jRXhwck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OkZ1bmNEZWNs
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1bmNFeHByTm9k
ZSk6CisgICAgICAgIChKU0M6OkNsYXNzRGVjbE5vZGU6OkNsYXNzRGVjbE5vZGUpOgorICAgICAg
ICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzRGVzdHJ1Y3R1cmluZ05v
ZGUpOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNGdW5jRXhwck5vZGUpOgorICAg
ICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNBcnJvd0Z1bmNFeHByTm9kZSk6CisgICAgICAg
IChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0NsYXNzRXhwck5vZGUpOgorICAgICAgICAoSlNDOjpF
eHByZXNzaW9uTm9kZTo6aXNDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9k
ZTo6aXNTaW1wbGVBcnJheSk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0FkZCk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1
bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmg6CisgICAgICAgICogcGFyc2Vy
L1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRW1w
dHlMZXRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlWWll
bGQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6
RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorCiAyMDE2LTAz
LTEwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGZpeCBDaGFuZ2Vsb2cuIGdpdCBtZXJnZWQgcG9vcmx5LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxOTc5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA1LDYgKzEwNSw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fZWNtYU5hbWUobm9kZS0+ZWNtYU5h
bWUoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQogICAgICwg
bV9zb3VyY2VPdmVycmlkZShXVEZNb3ZlKHNvdXJjZU92ZXJyaWRlKSkKKyAgICAsIG1fY2xhc3NT
b3VyY2Uobm9kZS0+Y2xhc3NTb3VyY2UoKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rvcktp
bmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7CiAg
ICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxOTc5NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTc2LDkgKzc2LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBjb25zdCBJZGVu
dGlmaWVyJiBlY21hTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU5hbWU7IH0KKyAgICB2b2lk
IHNldEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsgbV9lY21hTmFtZSA9IG5hbWU7
IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2luZmVycmVkTmFtZTsgfQogICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfTsKICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U291cmNlUGFyc2VNb2RlPihtX3NvdXJjZVBh
cnNlTW9kZSk7IH07CisKKyAgICBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NTb3VyY2U7IH07CisgICAgdm9pZCBzZXRDbGFzc1NvdXJjZShjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9jbGFzc1NvdXJjZSA9IHNvdXJjZTsgfTsKKwogICAg
IGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250
ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0
cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0xNjMsNiArMTY4LDcgQEAgcHJp
dmF0ZToKICAgICBJZGVudGlmaWVyIG1fZWNtYU5hbWU7CiAgICAgSWRlbnRpZmllciBtX2luZmVy
cmVkTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlT3ZlcnJpZGU7Cisg
ICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBt
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTk3OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTItMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2Fy
aWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSwgUy5MLgogICoKQEAgLTI4MTAsMTAgKzI4MTAsMTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdBcgogICAgIHJldHVybiBkc3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRz
dCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RGVmYXVsdENvbnN0cnVj
dG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwKKyAgICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UpCiB7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBtX3ZtLT5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y3JlYXRlRGVm
YXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgbmFtZSk7CiAgICAgZXhlY3V0YWJsZS0+
c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CisgICAgZXhlY3V0YWJsZS0+c2V0RWNt
YU5hbWUoZWNtYU5hbWUpOworICAgIGV4ZWN1dGFibGUtPnNldENsYXNzU291cmNlKGNsYXNzU291
cmNlKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRXhw
cihleGVjdXRhYmxlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTk3OTcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDA5LCAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAqCkBAIC01
MTgsNyArNTE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmNFeHByTm9kZSogZnVuYyk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZh
dWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0
cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xh
c3NTb3VyY2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJl
c3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAkocmV2aXNpb24gMTk3OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAq
ICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqICBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAwOSwgMjAxMi0yMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2Fy
aWNoQHV3YXRlcmxvby5jYSkKICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KQEAgLTMy
MjAsMTEgKzMyMjAsMTYgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvcjsKIAogICAgIC8vIEZJWE1FOiBN
YWtlIHRoZSBwcm90b3R5cGUgbm9uLWNvbmZpZ3VyYWJsZSAmIG5vbi13cml0YWJsZS4KLSAgICBp
ZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pCisgICAgaWYgKG1fY29uc3RydWN0b3JFeHByZXNz
aW9uKSB7CisgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbi0+aXNGdW5jRXhw
ck5vZGUoKSk7CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSA9IHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29uc3RydWN0b3JFeHByZXNzaW9uKS0+bWV0YWRhdGEo
KTsKKyAgICAgICAgbWV0YWRhdGEtPnNldEVjbWFOYW1lKGVjbWFOYW1lKCkpOworICAgICAgICBt
ZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIGNvbnN0cnVj
dG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pOwot
ICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnN0cnVjdG9yID0gZ2VuZXJhdG9y
LmVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwKLSAgICAgICAgICAgIG1fY2xhc3NIZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lKTsKKyAgICAgICAgICAgIG1fY2xhc3NI
ZXJpdGFnZSA/IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA6IENvbnN0cnVjdG9yS2luZDo6QmFz
ZSwKKyAgICAgICAgICAgIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSk7CiAgICAg
fQogCiAgICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAko
cmV2aXNpb24gMTk3OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Niw3ICszNDYsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBhdXRvIG1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4o
cmhzKS0+bWV0YWRhdGEoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShpZGVu
dCk7CiAgICAgICAgICAgICBtZXRhZGF0YS0+c2V0SW5mZXJyZWROYW1lKGlkZW50KTsKLSAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKHJocy0+aXNDbGFzc0V4cHJOb2RlKCkpCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxDbGFzc0V4cHJOb2RlKj4ocmhzKS0+c2V0RWNtYU5hbWUoaWRlbnQp
OwogICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
QXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCByaHMsIGFzc2lnbm1lbnRDb250ZXh0
KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQp
OwogICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTM2NCwxMCArMzY1LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgQ2xhc3NFeHByTm9kZSogY3JlYXRlQ2xh
c3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25O
b2RlKiBjb25zdHJ1Y3RvciwKKyAgICBDbGFzc0V4cHJOb2RlKiBjcmVhdGVDbGFzc0V4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyQ2xhc3NJbmZvPEFTVEJ1
aWxkZXI+JiBjbGFzc0luZm8sIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQs
IEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHBh
cmVudENsYXNzLCBQcm9wZXJ0eUxpc3ROb2RlKiBpbnN0YW5jZU1ldGhvZHMsIFByb3BlcnR5TGlz
dE5vZGUqIHN0YXRpY01ldGhvZHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBDbGFzc0V4cHJOb2RlKGxvY2F0aW9uLCBuYW1lLCBjbGFzc0Vudmlyb25tZW50LCBj
b25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGluc3RhbmNlTWV0aG9kcywgc3RhdGljTWV0aG9kcyk7
CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9u
KGNsYXNzSW5mby5zdGFydE9mZnNldCwgY2xhc3NJbmZvLmVuZE9mZnNldCwgY2xhc3NJbmZvLnN0
YXJ0TGluZSwgY2xhc3NJbmZvLnN0YXJ0Q29sdW1uKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgQ2xhc3NFeHByTm9kZShsb2NhdGlvbiwgKmNsYXNzSW5mby5jbGFzc05hbWUs
IHNvdXJjZSwgY2xhc3NFbnZpcm9ubWVudCwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBpbnN0
YW5jZU1ldGhvZHMsIHN0YXRpY01ldGhvZHMpOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkBAIC00NDIs
NyArNDQ0LDggQEAgcHVibGljOgogICAgICAgICAgICAgYXV0byBtZXRhZGF0YSA9IHN0YXRpY19j
YXN0PEZ1bmNFeHByTm9kZSo+KG5vZGUpLT5tZXRhZGF0YSgpOwogICAgICAgICAgICAgbWV0YWRh
dGEtPnNldEVjbWFOYW1lKCpwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgbWV0YWRhdGEtPnNl
dEluZmVycmVkTmFtZSgqcHJvcGVydHlOYW1lKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKG5vZGUtPmlzQ2xhc3NFeHByTm9kZSgpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q2xh
c3NFeHByTm9kZSo+KG5vZGUpLT5zZXRFY21hTmFtZSgqcHJvcGVydHlOYW1lKTsKICAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpwcm9wZXJ0eU5hbWUsIG5v
ZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZyk7CiAgICAgfQogICAgIFByb3BlcnR5Tm9k
ZSogY3JlYXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJs
ZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wpCkBAIC0xMzAxLDcgKzEz
MDQsOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vCiAgICAgICAg
ICAgICAgICAgYXV0byBtZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIp
LT5tZXRhZGF0YSgpOwogICAgICAgICAgICAgICAgIG1ldGFkYXRhLT5zZXRFY21hTmFtZShyZXNv
bHZlLT5pZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgICAgIG1ldGFkYXRhLT5zZXRJbmZlcnJl
ZE5hbWUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoZXhwci0+aXNDbGFzc0V4cHJOb2RlKCkpCisgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q2xhc3NFeHByTm9kZSo+KGV4cHIpLT5zZXRFY21hTmFtZShyZXNvbHZlLT5pZGVu
dGlmaWVyKCkpOwogICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1f
cGFyc2VyQXJlbmEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlm
aWVyKCksIGV4cHIsIEFzc2lnbm1lbnRDb250ZXh0OjpBc3NpZ25tZW50RXhwcmVzc2lvbik7CiAg
ICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxOTc5NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTg5MCwyNyArODkwLDI3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAogICAgIAot
ICAgIGlubGluZSBCYXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIGlu
bGluZSBCYXNlRnVuY0V4cHJOb2RlOjpCYXNlRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbWV0YWRhdGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKLSAgICAgICAgLCBtX21ldGFkYXRhKG1fbWV0YWRhdGEpCisg
ICAgICAgICwgbV9tZXRhZGF0YShtZXRhZGF0YSkKICAgICB7CiAgICAgICAgIG1fbWV0YWRhdGEt
PmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9
CiAKLSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgICAgIDog
QmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1fbWV0YWRhdGEsIHNvdXJjZSkKKyAg
ICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiBtZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgICAgICA6IEJhc2VGdW5j
RXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtZXRhZGF0YSwgc291cmNlKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiBtX21ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgaW5saW5l
IEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRh
dGEsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQotICAgICAgICAsIG1fbWV0YWRhdGEobV9tZXRhZGF0YSkKKyAgICAgICAgLCBtX21l
dGFkYXRhKG1ldGFkYXRhKQogICAgIHsKICAgICAgICAgbV9tZXRhZGF0YS0+ZmluaXNoUGFyc2lu
Zyhzb3VyY2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgQXJyb3dGdW5jRXhwck5vZGU6OkFycm93RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZSogbV9tZXRhZGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgICAgICA6IEJh
c2VGdW5jRXhwck5vZGUobG9jYXRpb24sIGlkZW50LCBtX21ldGFkYXRhLCBzb3VyY2UpCisgICAg
aW5saW5lIEFycm93RnVuY0V4cHJOb2RlOjpBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25NZXRh
ZGF0YU5vZGUqIG1ldGFkYXRhLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgIDog
QmFzZUZ1bmNFeHByTm9kZShsb2NhdGlvbiwgaWRlbnQsIG1ldGFkYXRhLCBzb3VyY2UpCiAgICAg
ewogICAgIH0KIApAQCAtOTI3LDEwICs5MjcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3Rv
ckV4cHJlc3Npb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0hlcml0YWdlLCBQcm9wZXJ0eUxpc3RO
b2RlKiBpbnN0YW5jZU1ldGhvZHMsIFByb3BlcnR5TGlzdE5vZGUqIHN0YXRpY01ldGhvZHMpCisg
ICAgaW5saW5lIENsYXNzRXhwck5vZGU6OkNsYXNzRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYg
Y2xhc3NTb3VyY2UsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJl
c3Npb25Ob2RlKiBjb25zdHJ1Y3RvckV4cHJlc3Npb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0hl
cml0YWdlLCBQcm9wZXJ0eUxpc3ROb2RlKiBpbnN0YW5jZU1ldGhvZHMsIFByb3BlcnR5TGlzdE5v
ZGUqIHN0YXRpY01ldGhvZHMpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUoY2xhc3NFbnZpcm9ubWVudCkKKyAgICAg
ICAgLCBtX2NsYXNzU291cmNlKGNsYXNzU291cmNlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQor
ICAgICAgICAsIG1fZWNtYU5hbWUoJm5hbWUpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvckV4cHJl
c3Npb24oY29uc3RydWN0b3JFeHByZXNzaW9uKQogICAgICAgICAsIG1fY2xhc3NIZXJpdGFnZShj
bGFzc0hlcml0YWdlKQogICAgICAgICAsIG1faW5zdGFuY2VNZXRob2RzKGluc3RhbmNlTWV0aG9k
cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE5Nzk3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDA5LCAyMDEzLCAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1l
cm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IE1ha3MgT3Jsb3ZpY2gKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KQEAgLTE2Niw2ICsxNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NsYXNzRXhwck5v
ZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21t
YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
aW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xODQ0LDcgKzE4NDUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgb3ZlcnJpZGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSB7IG1faWRlbnQgPSBpZGVudDsgfQogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KLSAgICAgICAgdm9pZCBzZXRF
Y21hTmFtZShjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSkgeyBBU1NFUlQoIWVjbWFOYW1lLmlz
TnVsbCgpKTsgbV9lY21hTmFtZSA9IGVjbWFOYW1lOyB9CisgICAgICAgIHZvaWQgc2V0RWNtYU5h
bWUoY29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUpIHsgbV9lY21hTmFtZSA9IGVjbWFOYW1lOyB9
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFOYW1lKCkgeyByZXR1cm4gbV9pZGVudC5p
c0VtcHR5KCkgPyBtX2VjbWFOYW1lIDogbV9pZGVudDsgfQogICAgICAgICB2b2lkIHNldEluZmVy
cmVkTmFtZShjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUpIHsgQVNTRVJUKCFpbmZlcnJl
ZE5hbWUuaXNOdWxsKCkpOyBtX2luZmVycmVkTmFtZSA9IGluZmVycmVkTmFtZTsgfQogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX2luZmVycmVkTmFt
ZS5pc0VtcHR5KCkgPyBtX2lkZW50IDogbV9pbmZlcnJlZE5hbWU7IH0KQEAgLTE4NjIsNiArMTg2
Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldEVuZFBvc2l0aW9uKEpTVGV4
dFBvc2l0aW9uKTsKIAogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZTsgfQorICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NTb3VyY2U7IH0KKyAgICAgICAgdm9pZCBzZXRDbGFz
c1NvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9jbGFzc1NvdXJjZSA9IHNvdXJj
ZTsgfQogCiAgICAgICAgIGludCBzdGFydFN0YXJ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydFN0YXJ0T2Zmc2V0OyB9CiAgICAgICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CkBAIC0xODg4LDYgKzE4OTEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAg
IGludCBtX3BhcmFtZXRlcnNTdGFydDsKICAgICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKKyAg
ICAgICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogICAgICAgICBpbnQgbV9zdGFydFN0YXJ0
T2Zmc2V0OwogICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OwogICAgICAgICBpbnQg
bV9sYXN0TGluZTsKQEAgLTE5NzQsMTUgKzE5NzgsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJsZTo6b3BlcmF0b3IgbmV3
OwogCi0gICAgICAgIENsYXNzRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJl
c3Npb25Ob2RlKiBjb25zdHJ1Y3RvckV4cHJlc3NzaW9uLAorICAgICAgICBDbGFzc0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VD
b2RlJiBjbGFzc1NvdXJjZSwKKyAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNz
RW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvckV4cHJlc3NzaW9uLAogICAg
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9wZXJ0eUxpc3ROb2RlKiBp
bnN0YW5jZU1ldGhvZHMsIFByb3BlcnR5TGlzdE5vZGUqIHN0YXRpY01ldGhvZHMpOwogCiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgZWNtYU5hbWUoKSB7IHJldHVybiBtX2VjbWFOYW1lID8gKm1fZWNt
YU5hbWUgOiBtX25hbWU7IH0KKyAgICAgICAgdm9pZCBzZXRFY21hTmFtZShjb25zdCBJZGVudGlm
aWVyJiBuYW1lKSB7IG1fZWNtYU5hbWUgPSBtX25hbWUuaXNOdWxsKCkgPyAmbmFtZSA6ICZtX25h
bWU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKKyAgICAgICAg
Ym9vbCBpc0NsYXNzRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICAgICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX25hbWU7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fZWNtYU5hbWU7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbjsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fY2xhc3NIZXJpdGFnZTsKICAgICAgICAgUHJvcGVydHlMaXN0Tm9kZSog
bV9pbnN0YW5jZU1ldGhvZHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCShyZXZpc2lvbiAxOTc5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYtMjAxMCwg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjE5Myw2ICsyMTkzLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlQ2xhc3NFeAogewogICAgIEFTU0VSVChtYXRjaChDTEFTU1RPS0VOKSk7CiAgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgaW5mby5zdGFydExp
bmUgPSBsb2NhdGlvbi5saW5lOworICAgIGluZm8uc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigp
OworICAgIGluZm8uc3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICBuZXh0
KCk7CiAKICAgICBBdXRvUG9wU2NvcGVSZWYgY2xhc3NTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CkBAIC0yMjAzLDcgKzIyMDYsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVD
bGFzc0V4CiAgICAgY29uc3QgSWRlbnRpZmllciogY2xhc3NOYW1lID0gbnVsbHB0cjsKICAgICBp
ZiAobWF0Y2goSURFTlQpKSB7CiAgICAgICAgIGNsYXNzTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OwotICAgICAgICBpbmZvLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICAgICAgbmV4dCgp
OwogICAgICAgICBmYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUo
Y2xhc3NOYW1lLCB0cnVlKSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwg
IiciLCBjbGFzc05hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOwog
ICAgIH0gZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7CkBAIC0y
MjE0LDYgKzIyMTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4
CiAgICAgfSBlbHNlCiAgICAgICAgIGNsYXNzTmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5u
dWxsSWRlbnRpZmllcjsKICAgICBBU1NFUlQoY2xhc3NOYW1lKTsKKyAgICBpbmZvLmNsYXNzTmFt
ZSA9IGNsYXNzTmFtZTsKIAogICAgIFRyZWVFeHByZXNzaW9uIHBhcmVudENsYXNzID0gMDsKICAg
ICBpZiAoY29uc3VtZShFWFRFTkRTKSkgewpAQCAtMjM0Myw5ICsyMzQ2LDEwIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXgKICAgICAgICAgfQogICAgIH0KIAorICAg
IGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29u
c3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNs
YXNzIGJvZHkiKTsKIAotICAgIGF1dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVD
bGFzc0V4cHIobG9jYXRpb24sICpjbGFzc05hbWUsIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNh
bEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgaW5zdGFuY2VNZXRob2Rz
LCBzdGF0aWNNZXRob2RzKTsKKyAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQuY3Jl
YXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGljYWxF
bnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGluc3RhbmNlTWV0aG9kcywg
c3RhdGljTWV0aG9kcyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lvbjsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJGdW5jdGlvbklu
Zm8uaAkocmV2aXNpb24gMTk3OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJGdW5jdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0MywxMSBAQCBzdHJ1Y3Qg
UGFyc2VyRnVuY3Rpb25JbmZvIHsKIAogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgogc3Ry
dWN0IFBhcnNlckNsYXNzSW5mbyB7Ci0gICAgY29uc3QgSWRlbnRpZmllciogY2xhc3NOYW1lID0g
MDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBjbGFzc05hbWUgeyBudWxscHRyIH07CisgICAgdW5z
aWduZWQgc3RhcnRPZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0IHsgMCB9Owor
ICAgIGludCBzdGFydExpbmUgeyAwIH07CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4geyAwIH07
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAkocmV2aXNpb24gMTk3OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4Miw3ICsxODIs
NyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRW1wdHlMZXRFeHByZXNzaW9u
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBBc3Np
Z25tZW50RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KLSAgICBDbGFzc0V4cHJlc3Npb24g
Y3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQ
cm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CisgICAgQ2xh
c3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBQYXJzZXJDbGFzc0luZm88U3ludGF4Q2hlY2tlcj4mLCBWYXJpYWJsZUVudmlyb25tZW50Jiwg
RXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlz
dCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxT
eW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIGludCBjcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwgSW5uZXJBcnJvd0Z1
bmN0aW9uQ29kZUZlYXR1cmVzID0gTm9Jbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcykgeyByZXR1
cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dG
dW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxOTc5NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAy
MDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEwLCAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NjIsNiArNjYyLDcgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9CisgICAgYm9vbCBp
c0NsYXNzKCkgY29uc3QgeyByZXR1cm4gIWNsYXNzU291cmNlKCkuaXNOdWxsKCk7IH0KICAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KICAgICBib29sIGlzR2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOyB9
CiAgICAgYm9vbCBpc1NldHRlcigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6U2V0dGVyTW9kZTsgfQpAQCAtNjcyLDYgKzY3Myw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKTsgfSAv
LyBFeGNsdWRpbmcgJ3RoaXMnIQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+cGFyc2VNb2RlKCk7IH0KKyAgICBjb25z
dCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5jbGFzc1NvdXJjZSgpOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5Nzk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMy0yMDA5LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtODksNyArODksMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBm
dW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJs
ZSgpOwotICAgICAgICAKKyAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQ2xhc3MoKSkgeworICAg
ICAgICAgICAgU3RyaW5nVmlldyBjbGFzc1NvdXJjZSA9IGV4ZWN1dGFibGUtPmNsYXNzU291cmNl
KCkudmlldygpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBjbGFzc1NvdXJjZS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKTsKKyAgICAgICAgfQor
CiAgICAgICAgIFN0cmluZyBmdW5jdGlvbkhlYWRlciA9IGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5j
dGlvbigpID8gIiIgOiAiZnVuY3Rpb24gIjsKICAgICAgICAgCiAgICAgICAgIFN0cmluZ1ZpZXcg
c291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTc5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTgw
MSw3ICs4MDEsNyBAQAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV9pc250X3dy
aXRhYmxlX2lzX2NvbmZpZ3VyYWJsZS5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9mdW5jdGlvbl9uYW1lX3Byb3BlcnR5X29iamVjdF9tZXRob2RzX2NsYXNzLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Z1bmN0
aW9uX25hbWVfcHJvcGVydHlfb2JqZWN0X21ldGhvZHNfZnVuY3Rpb24uanMKICAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV9zaG9ydGhhbmRf
bWV0aG9kc19ub19sZXhpY2FsX2JpbmRpbmcuanMKQEAgLTgwOSw3ICs4MDksNyBAQAogLSBwYXRo
OiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV9zeW1ib2wta2V5ZWRfbWV0aG9kcy5qcwogICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJp
YWJsZXNfY2xhc3MuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvZnVuY3Rpb25fbmFtZV9wcm9wZXJ0eV92YXJpYWJsZXNfZnVuY3Rpb24u
anMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZ2VuZXJhdG9yc18lR2VuZXJh
dG9yUHJvdG90eXBlJS5jb25zdHJ1Y3Rvci5qcwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3OTcwKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTYtMDMtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBGdW5jdGlvbi5uYW1lIGFuZCBGdW5jdGlvbiN0b1N0cmluZyBmb3IgRVM2IGNsYXNz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MzM2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9j
bGFzcy1zeW50YXgtbmFtZS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1uYW1lLmpzOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkQmVUcnVlKToKKyAgICAgICAgLSBSZWJhc2VkIGV4cGVjdGVkIHJlc3VsdC4KKworICAgICAg
ICAqIGpzL2Z1bmN0aW9uLXRvU3RyaW5nLXZzLW5hbWUuaHRtbDoKKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctdnMtbmFtZS5qczoKKyAgICAgICAgLSBBZGRlZCBu
ZXcgdGVzdHMgZm9yIGNsYXNzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2luc3BlY3Rvci9t
b2RlbC9yZW1vdGUtb2JqZWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgLSBSZWJhc2VkIGV4cGVj
dGVkIHJlc3VsdC4KKwogMjAxNi0wMy0xMCAgQW5keSBWYW5XYWdvbmVyICA8YW5keUBpbnN0cnVj
dHVyZS5jb20+CiAKICAgICAgICAgQWRkIHNob3VsZE5vdEJlIHRvIHN0YW5kYWxvbmUgdGVzdCBo
YXJuZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LW5hbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxOTc5NzApCisrKyBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgt
bmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyLDI0ICsxMiwyNCBAQCBQQVNT
IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Ojo6U3ludGF4CiBQQVNTICd1c2Ugc3RyaWN0Jzsg
Y2xhc3MgeyBjb25zdHJ1Y3RvcigpIHt9IH06OjpTeW50YXhFcnJvcjogQ2xhc3Mgc3RhdGVtZW50
cyBtdXN0IGhhdmUgYSBuYW1lLgogUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9CiBQ
QVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfQotUEFTUyBjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQSgpIHt9
JwotUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEudG9T
dHJpbmcoKTo6OidmdW5jdGlvbiBBKCkge30nCitQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3Rvcigp
IHt9IH07IEEudG9TdHJpbmcoKTo6OidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JworUEFT
UyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEudG9TdHJpbmco
KTo6OidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JwogUEFTUyBjbGFzcyBBIHsgY29uc3Ry
dWN0b3IoKSB7fSB9OyAobmV3IEEpIGluc3RhbmNlb2YgQQogUEFTUyAndXNlIHN0cmljdCc7IGNs
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgQSkgaW5zdGFuY2VvZiBBCi1QQVNTIGNs
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9OyAobmV3IEEpLmJhc2Uu
dG9TdHJpbmcoKTo6OidmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2UgPSBBOyB9JwotUEFTUyAndXNl
IHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9OyAo
bmV3IEEpLmJhc2UudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2UgPSBBOyB9
JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsgKG5l
dyBBKS5iYXNlLnRvU3RyaW5nKCk6OjonY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJh
c2UgPSBBOyB9IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkg
eyB0aGlzLmJhc2UgPSBBOyB9IH07IChuZXcgQSkuYmFzZS50b1N0cmluZygpOjo6J2NsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9JwogUEFTUyBjbGFzcyBBIHsgY29u
c3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7fTsKIFBBU1MgJ3VzZSBzdHJpY3Qn
OyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7fTsKLVBB
U1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25z
dHJ1Y3RvcigpIHt9IH07IEIudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBCKCkge30nCi1QQVNTICd1
c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRz
IEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBCKCkge30n
CitQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsg
Y29uc3RydWN0b3IoKSB7fSB9OyBCLnRvU3RyaW5nKCk6OjonY2xhc3MgQiBleHRlbmRzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIudG9T
dHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfScKIFBBU1Mg
Y2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307IChuZXcg
QikgaW5zdGFuY2VvZiBBCiBQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307IChuZXcgQikgaW5zdGFuY2VvZiBBCiBQQVNT
IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHt9OyAobmV3
IEIpIGluc3RhbmNlb2YgQgogUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3Rv
cigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHt9OyAobmV3IEIpIGluc3RhbmNlb2YgQgotUEFT
UyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0
cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH07
IChuZXcgQikuYmFzZS50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEoKSB7fScKLVBBU1MgJ3VzZSBz
dHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7
IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBC
OyB9IH07IChuZXcgQikuYmFzZS50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEoKSB7fScKLVBBU1Mg
Y2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAo
bmV3IEIpLmRlcml2ZWQudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBCKCkgeyBzdXBlcigpOyB0aGlz
LmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9JwotUEFTUyAndXNlIHN0cmljdCc7IGNsYXNz
IEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3Io
KSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBC
KS5kZXJpdmVkLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQigpIHsgc3VwZXIoKTsgdGhpcy5iYXNl
ID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfScKK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkg
e30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5i
YXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAobmV3IEIpLmJhc2UudG9TdHJpbmcoKTo6
OidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JworUEFTUyAndXNlIHN0cmljdCc7IGNsYXNz
IEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3Io
KSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBC
KS5iYXNlLnRvU3RyaW5nKCk6OjonY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfScKK1BBU1Mg
Y2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAo
bmV3IEIpLmRlcml2ZWQudG9TdHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVj
dG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0nCitQ
QVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBl
eHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5k
ZXJpdmVkID0gQjsgfSB9OyAobmV3IEIpLmRlcml2ZWQudG9TdHJpbmcoKTo6OidjbGFzcyBCIGV4
dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRl
cml2ZWQgPSBCOyB9IH0nCiAKIENsYXNzIGV4cHJlc3Npb24KIFBBU1MgQTo6OlJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBCkBAIC01Miw4ICs1Miw4IEBAIFBBU1MgdHlwZW9m
IChuZXcgKGNsYXNzIEEge30pKTo6OiJvYmplY3QKIFBBU1MgJ3VzZSBzdHJpY3QnOyB0eXBlb2Yg
KG5ldyAoY2xhc3MgQSB7fSkpOjo6Im9iamVjdCIKIFBBU1MgKG5ldyAoY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNlCiBQQVNTICd1c2Ugc3RyaWN0Jzsg
KG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNl
Ci1QQVNTIChuZXcgKGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNlID0gQTsgfSB9
KSkuYmFzZS50b1N0cmluZygpOjo6ImZ1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0iCi1Q
QVNTICd1c2Ugc3RyaWN0JzsgKG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJh
c2UgPSBBOyB9IH0pKS5iYXNlLnRvU3RyaW5nKCk6OjoiZnVuY3Rpb24gQSgpIHsgdGhpcy5iYXNl
ID0gQTsgfSIKK1BBU1MgKG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2Ug
PSBBOyB9IH0pKS5iYXNlLnRvU3RyaW5nKCk6OjoiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0
aGlzLmJhc2UgPSBBOyB9IH0iCitQQVNTICd1c2Ugc3RyaWN0JzsgKG5ldyAoY2xhc3MgQSB7IGNv
bnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNlLnRvU3RyaW5nKCk6OjoiY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0iCiBQQVNTIGNsYXNzIEEg
e307IChjbGFzcyBCIGV4dGVuZHMgQSB7fSkKIFBBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyBBIHt9
OyAoY2xhc3MgQiBleHRlbmRzIEEge30pCiBQQVNTIGNsYXNzIEEge307IChjbGFzcyBCIGV4dGVu
ZHMgQSB7fSk7IEI6OjpSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQgpAQCAt
NjQsMzYgKzY0LDM2IEBAIFBBU1MgY2xhc3MgQSB7fTsgbmV3IChjbGFzcyBCIGV4dGVuZHMgQSAK
IFBBU1MgJ3VzZSBzdHJpY3QnOyBjbGFzcyBBIHt9OyBuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsg
Y29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7
IH0gfSkKIFBBU1MgY2xhc3MgQSB7fTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkg
aW5zdGFuY2VvZiBBCiBQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7fTsgKG5ldyAoY2xhc3Mg
QiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhp
cy5kZXJpdmVkID0gQjsgfSB9KSkgaW5zdGFuY2VvZiBBCi1QQVNTIGNsYXNzIEEgeyBjb25zdHJ1
Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1
cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmJhc2UudG9TdHJp
bmcoKTo6OidmdW5jdGlvbiBBKCkge30nCi1QQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNv
bnN0cnVjdG9yKCkge30gfTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3Rvcigp
IHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuYmFzZS50
b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEoKSB7fScKLVBBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkge30gfTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIo
KTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmlu
ZygpOjo6J2Z1bmN0aW9uIEIoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZl
ZCA9IEI7IH0nCi1QQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30g
fTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhp
cy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmluZygpOjo6
J2Z1bmN0aW9uIEIoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7
IH0nCitQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0
ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVy
aXZlZCA9IEI7IH0gfSkpLmJhc2UudG9TdHJpbmcoKTo6OidjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7fSB9JworUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07
IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMu
YmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmJhc2UudG9TdHJpbmcoKTo6OidjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
fSB9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0
aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0pKS5kZXJpdmVkLnRvU3RyaW5nKCk6
OjonY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNl
ID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9JworUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0
b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmRl
cml2ZWQudG9TdHJpbmcoKTo6OidjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBz
dXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0nCiAKIENsYXNzIGV4
cHJlc3Npb24gYXNzaWdubWVudCB0byB2YXJpYWJsZQogUEFTUyBBOjo6UmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IEEKIFBBU1MgJ3VzZSBzdHJpY3QnOyBBOjo6UmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEEKIFBBU1MgdmFyIFZhckEgPSBjbGFzcyB7fQog
UEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3Mge30KLVBBU1MgdmFyIFZhckEgPSBj
bGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQS50b1N0cmluZygpOjo6J2Z1bmN0aW9uICgp
IHt9JwotUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcigp
IHt9IH07IFZhckEudG9TdHJpbmcoKTo6OidmdW5jdGlvbiAoKSB7fScKK1BBU1MgdmFyIFZhckEg
PSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQS50b1N0cmluZygpOjo6J2NsYXNzIHsg
Y29uc3RydWN0b3IoKSB7fSB9JworUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3Mg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IFZhckEudG9TdHJpbmcoKTo6OidjbGFzcyB7IGNvbnN0cnVj
dG9yKCkge30gfScKIFBBU1MgVmFyQTo6OlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBWYXJBCiBQQVNTICd1c2Ugc3RyaWN0JzsgVmFyQTo6OlJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBWYXJBCiBQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfQogUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkge30gfQotUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9
IH07IFZhckEudG9TdHJpbmcoKTo6OidmdW5jdGlvbiBBKCkge30nCi1QQVNTICd1c2Ugc3RyaWN0
JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5n
KCk6OjonZnVuY3Rpb24gQSgpIHt9JworUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1
Y3RvcigpIHt9IH07IFZhckEudG9TdHJpbmcoKTo6OidjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
fSB9JworUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkge30gfTsgVmFyQS50b1N0cmluZygpOjo6J2NsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0n
CiBQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmlu
ZygpOjo6UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEEKIFBBU1MgJ3VzZSBz
dHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEudG9TdHJp
bmcoKTo6OlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBCiBQQVNTIHZhciBW
YXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyBWYXJBKSBpbnN0YW5jZW9m
IFZhckEKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3Rv
cigpIHt9IH07IChuZXcgVmFyQSkgaW5zdGFuY2VvZiBWYXJBCi1QQVNTIHZhciBWYXJBID0gY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH07IChuZXcgVmFyQSkuYmFz
ZS50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0nCi1QQVNTICd1
c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFz
ZSA9IEE7IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQSgpIHsg
dGhpcy5iYXNlID0gQTsgfScKK1BBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCk6OjonY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0nCitQQVNTICd1c2Ugc3Ry
aWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7
IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCk6OjonY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0nCiBQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25z
dHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1
Y3RvcigpIHt9IH07CiBQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30g
fTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsg
Qjo6OlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCCiBQQVNTICd1c2Ugc3Ry
aWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9
IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCOjo6UmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEIKLVBBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsg
Y29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29u
c3RydWN0b3IoKSB7fSB9OyBWYXJCLnRvU3RyaW5nKCk6OjonZnVuY3Rpb24gQigpIHt9JwotUEFT
UyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsg
dmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFy
Qi50b1N0cmluZygpOjo6J2Z1bmN0aW9uIEIoKSB7fScKK1BBU1MgdmFyIFZhckEgPSBjbGFzcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsg
Y29uc3RydWN0b3IoKSB7fSB9OyBWYXJCLnRvU3RyaW5nKCk6OjonY2xhc3MgQiBleHRlbmRzIFZh
ckEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBW
YXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJCLnRvU3RyaW5nKCk6OjonY2xhc3MgQiBleHRl
bmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nCiBQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7
IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IH07
IChuZXcgVmFyQikgaW5zdGFuY2VvZiBWYXJBCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEg
PSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5k
cyBWYXJBIHsgfTsgKG5ldyBWYXJCKSBpbnN0YW5jZW9mIFZhckEKIFBBU1MgdmFyIFZhckEgPSBj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBW
YXJBIHsgfTsgKG5ldyBWYXJCKSBpbnN0YW5jZW9mIFZhckIKQEAgLTExOCw3ICsxMTgsNyBAQCBQ
QVNTIGNsYXNzIEEge307IHZhciByZXN1bHQgPSBBOyByZXN1bHQKIFBBU1MgJ3VzZSBzdHJpY3Qn
OyBjbGFzcyBBIHt9OyB2YXIgcmVzdWx0ID0gQTsgcmVzdWx0CiBQQVNTIGV2YWwoJ3ZhciBGb28g
PSAxMCcpOyBGb286OjoxMAogUEFTUyAndXNlIHN0cmljdCc7IGV2YWwoJ3ZhciBGb28gPSAxMCcp
OyBGb286OjpSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogRm9vCi1QQVNTIGV2
YWwoJ2NsYXNzIEJhciB7IGNvbnN0cnVjdG9yKCkge30gfTsgQmFyLnRvU3RyaW5nKCknKTs6Ojon
ZnVuY3Rpb24gQmFyKCkge30nCitQQVNTIGV2YWwoJ2NsYXNzIEJhciB7IGNvbnN0cnVjdG9yKCkg
e30gfTsgQmFyLnRvU3RyaW5nKCknKTs6OjonY2xhc3MgQmFyIHsgY29uc3RydWN0b3IoKSB7fSB9
JwogUEFTUyAndXNlIHN0cmljdCc7IGV2YWwoJ2NsYXNzIEJhciB7IGNvbnN0cnVjdG9yKCkge30g
fScpOyBCYXIudG9TdHJpbmcoKTo6OlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiBCYXIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkCiAKSW5kZXg6IExheW91dFRlc3RzL2pzL2Z1
bmN0aW9uLXRvU3RyaW5nLXZzLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9mdW5jdGlvbi10b1N0cmluZy12cy1uYW1lLmh0bWwJKHJldmlzaW9uIDE5Nzk3MCkKKysrIExh
eW91dFRlc3RzL2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXZzLW5hbWUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNSw2ICs1LDQ2IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctdnMtbmFtZS5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+
CitmYWlsdXJlcyA9ICIiOworCitzZWN0aW9uID0gImdsb2JhbCBjbGFzcyBzdGF0ZW1lbnRzIHdp
dGggaWRlbnRpY2FsIGNsYXNzIGJvZGllcyBmcm9tIGRpZmZlcmVudCBzY3JpcHRzIjsKKzwvc2Ny
aXB0PgorPCEtLSBDYXNlIDE6IEEgZ2xvYmFsIGNsYXNzIHN0YXRlbWVudDogLS0+CisgICAgPHNj
cmlwdD5jbGFzcyBnbG9iYWxDbGFzczEgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0
dWZmKCkgeyByZXR1cm4gNTsgfSB9PC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAyOiBTYW1lIGNsYXNz
IGJvZHkgYXMgQ2FzZSAxIGJ1dCBpbmRlbnRlZC4gLS0+CisgICAgICAgIDxzY3JpcHQ+Y2xhc3Mg
Z2xvYmFsQ2xhc3MyIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0
dXJuIDU7IH0gfTwvc2NyaXB0PgorCis8IS0tIENhc2UgMzogU2FtZSBjbGFzcyBib2R5IGluZGVu
dGVkIG9uIHRoZSBzYW1lIGxpbmUuIC0tPgorPHNjcmlwdD5jbGFzcyBnbG9iYWxDbGFzczMgeyBj
b25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9PC9zY3Jp
cHQ+CisKKzxzY3JpcHQ+CitzZWN0aW9uID0gImdsb2JhbCBjbGFzcyBleHByZXNzaW9ucyB3aXRo
IGlkZW50aWNhbCBjbGFzcyBib2RpZXMgZnJvbSBkaWZmZXJlbnQgc2NyaXB0cyI7Cis8L3Njcmlw
dD4KKzwhLS0gQ2FzZSAxOiBBIGdsb2JhbCBjbGFzcyBleHByZXNzaW9uOiAtLT4KKyAgICA8c2Ny
aXB0PnZhciBnbG9iYWxDbGFzc0V4cHIxID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVy
biB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9PC9zY3JpcHQ+CisKKzwhLS0gQ2FzZSAyOiBT
YW1lIGNsYXNzIGJvZHkgYXMgQ2FzZSAxIGJ1dCBpbmRlbnRlZC4gLS0+CisgICAgICAgIDxzY3Jp
cHQ+dmFyIGdsb2JhbENsYXNzRXhwcjIgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJu
IHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH08L3NjcmlwdD4KKworPCEtLSBDYXNlIDM6IFNh
bWUgY2xhc3MgYm9keSBpbmRlbnRlZCBvbiB0aGUgc2FtZSBsaW5lLiAtLT4KKzxzY3JpcHQ+dmFy
IGdsb2JhbENsYXNzRXhwcjMgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0g
c3R1ZmYoKSB7IHJldHVybiA1OyB9IH08L3NjcmlwdD4KKworPHNjcmlwdD4KK3Rlc3QoZ2xvYmFs
Q2xhc3MxLCAiZ2xvYmFsQ2xhc3MxIiwgImNsYXNzIGdsb2JhbENsYXNzMSB7IGNvbnN0cnVjdG9y
KHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKK3Rlc3QoZ2xvYmFs
Q2xhc3MyLCAiZ2xvYmFsQ2xhc3MyIiwgImNsYXNzIGdsb2JhbENsYXNzMiB7IGNvbnN0cnVjdG9y
KHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKK3Rlc3QoZ2xvYmFs
Q2xhc3MzLCAiZ2xvYmFsQ2xhc3MzIiwgImNsYXNzIGdsb2JhbENsYXNzMyB7IGNvbnN0cnVjdG9y
KHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKKwordGVzdChnbG9i
YWxDbGFzc0V4cHIxLCAiZ2xvYmFsQ2xhc3NFeHByMSIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKHgp
IHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKK3Rlc3QoZ2xvYmFsQ2xh
c3NFeHByMiwgImdsb2JhbENsYXNzRXhwcjIiLCAiY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJl
dHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cit0ZXN0KGdsb2JhbENsYXNzRXhw
cjMsICJnbG9iYWxDbGFzc0V4cHIzIiwgImNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4g
eDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOworCitpZiAoZmFpbHVyZUNvdW50KQorICAg
IHRocm93IEVycm9yKCJGb3VuZCAiICsgZmFpbHVyZUNvdW50ICsgIiBmYWlsdXJlczpcbiIgKyBm
YWlsdXJlcyk7Cis8L3NjcmlwdD4KKwogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1uYW1lLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbmFtZS5qcwkocmV2aXNpb24gMTk3
OTcwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1uYW1lLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNSArNjgsMTUgQEAgcnVuVGVzdFNob3VsZFRocm93KCJB
Iik7CiBydW5UZXN0U2hvdWxkVGhyb3coImNsYXNzIHt9Iik7CiBydW5UZXN0U2hvdWxkVGhyb3co
ImNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7CiBydW5UZXN0U2hvdWxkTm90VGhyb3coImNs
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0iKTsKLXJ1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7
IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpIiwgIidmdW5jdGlvbiBBKCkge30nIik7
CitydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEudG9TdHJp
bmcoKSIsICInY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsKIHJ1blRlc3RTaG91bGRC
ZVRydWUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgQSkgaW5zdGFuY2VvZiBB
Iik7Ci1ydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNl
ID0gQTsgfSB9OyAobmV3IEEpLmJhc2UudG9TdHJpbmcoKSIsICInZnVuY3Rpb24gQSgpIHsgdGhp
cy5iYXNlID0gQTsgfSciKTsKK3J1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkgeyB0aGlzLmJhc2UgPSBBOyB9IH07IChuZXcgQSkuYmFzZS50b1N0cmluZygpIiwgIidjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSciKTsKIHJ1blRlc3RTaG91
bGROb3RUaHJvdygiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRz
IEEge307Iik7Ci1ydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07
IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCLnRvU3RyaW5nKCkiLCAi
J2Z1bmN0aW9uIEIoKSB7fSciKTsKK3J1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIudG9T
dHJpbmcoKSIsICInY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nIik7CiBy
dW5UZXN0U2hvdWxkQmVUcnVlKCJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBC
IGV4dGVuZHMgQSB7fTsgKG5ldyBCKSBpbnN0YW5jZW9mIEEiKTsKIHJ1blRlc3RTaG91bGRCZVRy
dWUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHt9OyAo
bmV3IEIpIGluc3RhbmNlb2YgQiIpOwotcnVuVGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3Ry
dWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigp
OyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH07IChuZXcgQikuYmFzZS50b1N0
cmluZygpIiwgIidmdW5jdGlvbiBBKCkge30nIik7Ci1ydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7
IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5k
ZXJpdmVkLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEIoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9
IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0nIik7CitydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1
cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5iYXNl
LnRvU3RyaW5nKCkiLCAiJ2NsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0nIik7CitydW5UZXN0
U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBB
IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9
IEI7IH0gfTsgKG5ldyBCKS5kZXJpdmVkLnRvU3RyaW5nKCkiLCAiJ2NsYXNzIEIgZXh0ZW5kcyBB
IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9
IEI7IH0gfSciKTsKIAogLy8gQ2xhc3MgZXhwcmVzc2lvbi4gQ2xhc3MgbmFtZSBub3QgYWRkZWQg
dG8gc2NvcGUuIENsYXNzIG5hbWUgaXMgYXZhaWxhYmxlIGluc2lkZSBjbGFzcyBzY29wZS4KIGRl
YnVnKCcnKTsgZGVidWcoJ0NsYXNzIGV4cHJlc3Npb24nKTsKQEAgLTkwLDI5ICs5MCwyOSBAQCBy
dW5UZXN0U2hvdWxkVGhyb3coIihjbGFzcyBBIHt9KTsgQSIpOwogcnVuVGVzdFNob3VsZE5vdFRo
cm93KCJuZXcgKGNsYXNzIEEge30pIik7CiBydW5UZXN0U2hvdWxkQmUoInR5cGVvZiAobmV3IChj
bGFzcyBBIHt9KSkiLCAnIm9iamVjdCInKTsKIHJ1blRlc3RTaG91bGROb3RUaHJvdygiKG5ldyAo
Y2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNlIik7Ci1y
dW5UZXN0U2hvdWxkQmUoIihuZXcgKGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNl
ID0gQTsgfSB9KSkuYmFzZS50b1N0cmluZygpIiwgJyJmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2Ug
PSBBOyB9IicpOworcnVuVGVzdFNob3VsZEJlKCIobmV3IChjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7IHRoaXMuYmFzZSA9IEE7IH0gfSkpLmJhc2UudG9TdHJpbmcoKSIsICciY2xhc3MgQSB7IGNv
bnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0iJyk7CiBydW5UZXN0U2hvdWxkTm90VGhy
b3coImNsYXNzIEEge307IChjbGFzcyBCIGV4dGVuZHMgQSB7fSkiKTsKIHJ1blRlc3RTaG91bGRU
aHJvdygiY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9KTsgQiIpOwogcnVuVGVzdFNo
b3VsZE5vdFRocm93KCJjbGFzcyBBIHt9OyBuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9KSIpOwog
cnVuVGVzdFNob3VsZE5vdFRocm93KCJjbGFzcyBBIHt9OyBuZXcgKGNsYXNzIEIgZXh0ZW5kcyBB
IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9
IEI7IH0gfSkiKTsKIHJ1blRlc3RTaG91bGRCZVRydWUoImNsYXNzIEEge307IChuZXcgKGNsYXNz
IEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRo
aXMuZGVyaXZlZCA9IEI7IH0gfSkpIGluc3RhbmNlb2YgQSIpOwotcnVuVGVzdFNob3VsZEJlKCJj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNv
bnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9
IH0pKS5iYXNlLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEEoKSB7fSciKTsKLXJ1blRlc3RTaG91
bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyAoY2xhc3MgQiBleHRlbmRz
IEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVk
ID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmluZygpIiwgIidmdW5jdGlvbiBCKCkgeyBzdXBlcigp
OyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9JyIpOworcnVuVGVzdFNob3VsZEJl
KCJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7
IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBC
OyB9IH0pKS5iYXNlLnRvU3RyaW5nKCkiLCAiJ2NsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0n
Iik7CitydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcg
KGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9
IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmRlcml2ZWQudG9TdHJpbmcoKSIsICInY2xhc3Mg
QiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhp
cy5kZXJpdmVkID0gQjsgfSB9JyIpOwogCiAvLyBBc3NpZ25tZW50IG9mIGEgY2xhc3MgZXhwcmVz
c2lvbiB0byBhIHZhcmlhYmxlLiBWYXJpYWJsZSBuYW1lIGF2YWlsYWJsZSBpbiBzY29wZSwgY2xh
c3MgbmFtZSBpcyBub3QuIENsYXNzIG5hbWUgaXMgYXZhaWxhYmxlIGluc2lkZSBjbGFzcyBzY29w
ZS4KIGRlYnVnKCcnKTsgZGVidWcoJ0NsYXNzIGV4cHJlc3Npb24gYXNzaWdubWVudCB0byB2YXJp
YWJsZScpOwogcnVuVGVzdFNob3VsZFRocm93KCJBIik7CiBydW5UZXN0U2hvdWxkTm90VGhyb3co
InZhciBWYXJBID0gY2xhc3Mge30iKTsKLXJ1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFz
cyB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQS50b1N0cmluZygpIiwgIidmdW5jdGlvbiAoKSB7
fSciKTsKK3J1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkg
e30gfTsgVmFyQS50b1N0cmluZygpIiwgIidjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsK
IHJ1blRlc3RTaG91bGRUaHJvdygiVmFyQSIpOwogcnVuVGVzdFNob3VsZE5vdFRocm93KCJ2YXIg
VmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0iKTsKLXJ1blRlc3RTaG91bGRCZSgi
dmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5nKCki
LCAiJ2Z1bmN0aW9uIEEoKSB7fSciKTsKK3J1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5nKCkiLCAiJ2NsYXNzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH0nIik7CiBydW5UZXN0U2hvdWxkVGhyb3coInZhciBWYXJBID0gY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQS50b1N0cmluZygpIik7CiBydW5UZXN0U2hvdWxk
QmVUcnVlKCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgVmFy
QSkgaW5zdGFuY2VvZiBWYXJBIik7Ci1ydW5UZXN0U2hvdWxkQmUoInZhciBWYXJBID0gY2xhc3Mg
QSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH07IChuZXcgVmFyQSkuYmFzZS50
b1N0cmluZygpIiwgIidmdW5jdGlvbiBBKCkgeyB0aGlzLmJhc2UgPSBBOyB9JyIpOworcnVuVGVz
dFNob3VsZEJlKCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNl
ID0gQTsgfSB9OyAobmV3IFZhckEpLmJhc2UudG9TdHJpbmcoKSIsICInY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0nIik7CiBydW5UZXN0U2hvdWxkTm90VGhyb3co
InZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFz
cyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsiKTsKIHJ1blRlc3RTaG91bGRU
aHJvdygidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9
IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCIik7Ci1ydW5UZXN0
U2hvdWxkQmUoInZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZh
ckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQi50b1N0
cmluZygpIiwgIidmdW5jdGlvbiBCKCkge30nIik7CitydW5UZXN0U2hvdWxkQmUoInZhciBWYXJB
ID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVu
ZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQi50b1N0cmluZygpIiwgIidjbGFzcyBC
IGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsKIHJ1blRlc3RTaG91bGRCZVRy
dWUoInZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBj
bGFzcyBCIGV4dGVuZHMgVmFyQSB7IH07IChuZXcgVmFyQikgaW5zdGFuY2VvZiBWYXJBIik7CiBy
dW5UZXN0U2hvdWxkQmVUcnVlKCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9
IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyB9OyAobmV3IFZhckIpIGluc3Rh
bmNlb2YgVmFyQiIpOwogcnVuVGVzdFNob3VsZEJlVHJ1ZSgidmFyIFZhckEgPSBjbGFzcyBBIHsg
Y29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29u
c3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IFZhckE7IHRoaXMuZGVyaXZlZCA9IEI7
IHRoaXMuZGVyaXZlZFZhciA9IFZhckI7IH0gfTsgKG5ldyBWYXJCKS5iYXNlID09PSBWYXJBIik7
CkBAIC0xMjgsNSArMTI4LDUgQEAgcnVuVGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3RydWN0
b3IoKQogcnVuVGVzdFNob3VsZE5vdFRocm93KCJjbGFzcyBBIHt9OyB2YXIgcmVzdWx0ID0gQTsg
cmVzdWx0Iik7CiBzaG91bGRCZSgiZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbyIsICIxMCIpOwog
c2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbyIpOwot
c2hvdWxkQmUoImV2YWwoJ2NsYXNzIEJhciB7IGNvbnN0cnVjdG9yKCkge30gfTsgQmFyLnRvU3Ry
aW5nKCknKTsiLCAiJ2Z1bmN0aW9uIEJhcigpIHt9JyIpOworc2hvdWxkQmUoImV2YWwoJ2NsYXNz
IEJhciB7IGNvbnN0cnVjdG9yKCkge30gfTsgQmFyLnRvU3RyaW5nKCknKTsiLCAiJ2NsYXNzIEJh
ciB7IGNvbnN0cnVjdG9yKCkge30gfSciKTsKIHNob3VsZFRocm93KCIndXNlIHN0cmljdCc7IGV2
YWwoJ2NsYXNzIEJhciB7IGNvbnN0cnVjdG9yKCkge30gfScpOyBCYXIudG9TdHJpbmcoKSIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uLXRvU3RyaW5nLXZzLW5h
bWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Z1bmN0aW9u
LXRvU3RyaW5nLXZzLW5hbWUuanMJKHJldmlzaW9uIDE5Nzk3MCkKKysrIExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9mdW5jdGlvbi10b1N0cmluZy12cy1uYW1lLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTgsNiArMjE4LDMwNiBAQCBzZWN0aW9uID0gIm9iamVjdCBzaG9ydGhhbmQgbWV0aG9k
IjsKICAgICB9CiB9CiAKK3NlY3Rpb24gPSAiY2xhc3MgZnJvbSBzdGF0ZW1lbnQiOworKGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBmb28ge30KKyAgICBjbGFzcyBiYXIge30KKyAgICBjbGFzcyBi
YXggeyBzdGF0aWMgbmFtZSgpIHt9IH0KKyAgICBsZXQgYmF6ID0gYmFyOworICAgIGNsYXNzIGdv
byBleHRlbmRzIGZvbyB7fQorCisgICAgdGVzdChmb28sICJmb28iLCAiY2xhc3MgZm9vIHt9Iik7
CisgICAgdGVzdChiYXIsICJiYXIiLCAiY2xhc3MgYmFyIHt9Iik7CisgICAgc2hvdWxkQmUoInR5
cGVvZiBiYXgubmFtZSBvZiAiLCAiYmF4IiwgdHlwZW9mIGJheC5uYW1lLCAiZnVuY3Rpb24iKTsK
KyAgICBzaG91bGRCZSgidG9TdHJpbmcgb2YgIiwgImJheCIsIGJheC50b1N0cmluZygpLCAiY2xh
c3MgYmF4IHsgc3RhdGljIG5hbWUoKSB7fSB9Iik7CisgICAgdGVzdChiYXosICJiYXIiLCAiY2xh
c3MgYmFyIHt9Iik7CisgICAgdGVzdChnb28sICJnb28iLCAiY2xhc3MgZ29vIGV4dGVuZHMgZm9v
IHt9Iik7CisKKyAgICBzZWN0aW9uID0gImJvdW5kIGNsYXNzIGZyb20gc3RhdGVtZW50IjsKKyAg
ICB7CisgICAgICAgIGxldCBib3VuZDEgPSBmb28uYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91
bmQxLCAiYm91bmQgZm9vIiwgImZ1bmN0aW9uIGZvbygpIHsgW25hdGl2ZSBjb2RlXSB9Iik7Cisg
ICAgICAgIGxldCBib3VuZDIgPSBiYXIuYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQyLCAi
Ym91bmQgYmFyIiwgImZ1bmN0aW9uIGJhcigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAg
IGxldCBib3VuZDMgPSBiYXguYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQzLCAiYm91bmQg
IiwgImZ1bmN0aW9uKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsgLy8gYmF4Lm5hbWUgaXMgbm90IGEg
c3RyaW5nLgorICAgICAgICBsZXQgYm91bmQ0ID0gYmF6LmJpbmQoe30pOworICAgICAgICB0ZXN0
KGJvdW5kNCwgImJvdW5kIGJhciIsICJmdW5jdGlvbiBiYXIoKSB7IFtuYXRpdmUgY29kZV0gfSIp
OworICAgICAgICBsZXQgYm91bmQ1ID0gZ29vLmJpbmQoe30pOworICAgICAgICB0ZXN0KGJvdW5k
NSwgImJvdW5kIGdvbyIsICJmdW5jdGlvbiBnb28oKSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAg
IH0KK30pKCk7CisKK3NlY3Rpb24gPSAiY2xhc3Mgd2l0aCBjb25zdHJ1Y3RvciBmcm9tIHN0YXRl
bWVudCI7CisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIGZvbyB7IGNvbnN0cnVjdG9yKHgpIHt9
IH0KKyAgICBjbGFzcyBiYXIgeyBjb25zdHJ1Y3RvcigpIHt9IH0KKyAgICBjbGFzcyBiYXggeyBz
dGF0aWMgbmFtZSgpIHt9IGNvbnN0cnVjdG9yKCkge30gfQorICAgIGxldCBiYXogPSBiYXI7Cisg
ICAgY2xhc3MgZ29vIGV4dGVuZHMgZm9vIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKDUpOyB9IH0K
KworICAgIHRlc3QoZm9vLCAiZm9vIiwgImNsYXNzIGZvbyB7IGNvbnN0cnVjdG9yKHgpIHt9IH0i
KTsKKyAgICB0ZXN0KGJhciwgImJhciIsICJjbGFzcyBiYXIgeyBjb25zdHJ1Y3RvcigpIHt9IH0i
KTsKKyAgICBzaG91bGRCZSgidHlwZW9mIGJheC5uYW1lIG9mICIsICJiYXgiLCB0eXBlb2YgYmF4
Lm5hbWUsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJ0b1N0cmluZyBvZiAiLCAiYmF4Iiwg
YmF4LnRvU3RyaW5nKCksICJjbGFzcyBiYXggeyBzdGF0aWMgbmFtZSgpIHt9IGNvbnN0cnVjdG9y
KCkge30gfSIpOworICAgIHRlc3QoYmF6LCAiYmFyIiwgImNsYXNzIGJhciB7IGNvbnN0cnVjdG9y
KCkge30gfSIpOworICAgIHRlc3QoZ29vLCAiZ29vIiwgImNsYXNzIGdvbyBleHRlbmRzIGZvbyB7
IGNvbnN0cnVjdG9yKCkgeyBzdXBlcig1KTsgfSB9Iik7CisKKyAgICBzZWN0aW9uID0gImJvdW5k
IGNsYXNzIHdpdGggY29uc3RydWN0b3IgZnJvbSBzdGF0ZW1lbnQiOworICAgIHsKKyAgICAgICAg
bGV0IGJvdW5kMSA9IGZvby5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDEsICJib3VuZCBm
b28iLCAiZnVuY3Rpb24gZm9vKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJv
dW5kMiA9IGJhci5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDIsICJib3VuZCBiYXIiLCAi
ZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kMyA9
IGJheC5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDMsICJib3VuZCAiLCAiZnVuY3Rpb24o
KSB7IFtuYXRpdmUgY29kZV0gfSIpOyAvLyBiYXgubmFtZSBpcyBub3QgYSBzdHJpbmcuCisgICAg
ICAgIGxldCBib3VuZDQgPSBiYXouYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ0LCAiYm91
bmQgYmFyIiwgImZ1bmN0aW9uIGJhcigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAgIGxl
dCBib3VuZDUgPSBnb28uYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ1LCAiYm91bmQgZ29v
IiwgImZ1bmN0aW9uIGdvbygpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgfQorfSkoKTsKKwor
c2VjdGlvbiA9ICJjbGFzcyBmcm9tIGV4cHJlc3Npb24iOworKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgZm9vID0gY2xhc3MgbmFtZWRGb28ge30KKyAgICBsZXQgYmFyID0gY2xhc3Mge30KKyAgICBs
ZXQgYmF4ID0gY2xhc3MgeyBzdGF0aWMgbmFtZSgpIHt9IH0KKyAgICBsZXQgYmF6ID0gYmFyOwor
ICAgIGxldCBnb28gPSBjbGFzcyBleHRlbmRzIGZvbyB7fQorCisgICAgdGVzdChmb28sICJuYW1l
ZEZvbyIsICJjbGFzcyBuYW1lZEZvbyB7fSIpOworICAgIHRlc3QoYmFyLCAiYmFyIiwgImNsYXNz
IHt9Iik7CisgICAgc2hvdWxkQmUoInR5cGVvZiBiYXgubmFtZSBvZiAiLCAiYmF4IiwgdHlwZW9m
IGJheC5uYW1lLCAiZnVuY3Rpb24iKTsKKyAgICBzaG91bGRCZSgidG9TdHJpbmcgb2YgIiwgImJh
eCIsIGJheC50b1N0cmluZygpLCAiY2xhc3MgeyBzdGF0aWMgbmFtZSgpIHt9IH0iKTsKKyAgICB0
ZXN0KGJheiwgImJhciIsICJjbGFzcyB7fSIpOworICAgIHRlc3QoZ29vLCAiZ29vIiwgImNsYXNz
IGV4dGVuZHMgZm9vIHt9Iik7CisKKyAgICBzZWN0aW9uID0gImJvdW5kIGNsYXNzIGZyb20gZXhw
cmVzc2lvbiI7CisgICAgeworICAgICAgICBsZXQgYm91bmQxID0gZm9vLmJpbmQoe30pOworICAg
ICAgICB0ZXN0KGJvdW5kMSwgImJvdW5kIG5hbWVkRm9vIiwgImZ1bmN0aW9uIG5hbWVkRm9vKCkg
eyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kMiA9IGJhci5iaW5kKHt9KTsK
KyAgICAgICAgdGVzdChib3VuZDIsICJib3VuZCBiYXIiLCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0
aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kMyA9IGJheC5iaW5kKHt9KTsKKyAgICAg
ICAgdGVzdChib3VuZDMsICJib3VuZCAiLCAiZnVuY3Rpb24oKSB7IFtuYXRpdmUgY29kZV0gfSIp
OyAvLyBiYXgubmFtZSBpcyBub3QgYSBzdHJpbmcuCisgICAgICAgIGxldCBib3VuZDQgPSBiYXou
YmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ0LCAiYm91bmQgYmFyIiwgImZ1bmN0aW9uIGJh
cigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAgIGxldCBib3VuZDUgPSBnb28uYmluZCh7
fSk7CisgICAgICAgIHRlc3QoYm91bmQ1LCAiYm91bmQgZ29vIiwgImZ1bmN0aW9uIGdvbygpIHsg
W25hdGl2ZSBjb2RlXSB9Iik7CisgICAgfQorfSkoKTsKKworc2VjdGlvbiA9ICJjbGFzcyB3aXRo
IGNvbnN0cnVjdG9yIGZyb20gZXhwcmVzc2lvbiI7CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBm
b28gPSBjbGFzcyBuYW1lZEZvbyB7IGNvbnN0cnVjdG9yKHgpIHt9IH0KKyAgICBsZXQgYmFyID0g
Y2xhc3MgeyBjb25zdHJ1Y3RvcigpIHt9IH0KKyAgICBsZXQgYmF4ID0gY2xhc3MgeyBzdGF0aWMg
bmFtZSgpIHt9IGNvbnN0cnVjdG9yKCkge30gfQorICAgIGxldCBiYXogPSBiYXI7CisgICAgbGV0
IGdvbyA9IGNsYXNzIGV4dGVuZHMgZm9vIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKHgpIH0gfQor
CisgICAgdGVzdChmb28sICJuYW1lZEZvbyIsICJjbGFzcyBuYW1lZEZvbyB7IGNvbnN0cnVjdG9y
KHgpIHt9IH0iKTsKKyAgICB0ZXN0KGJhciwgImJhciIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKCkg
e30gfSIpOworICAgIHNob3VsZEJlKCJ0eXBlb2YgYmF4Lm5hbWUgb2YgIiwgImJheCIsIHR5cGVv
ZiBiYXgubmFtZSwgImZ1bmN0aW9uIik7CisgICAgc2hvdWxkQmUoInRvU3RyaW5nIG9mICIsICJi
YXgiLCBiYXgudG9TdHJpbmcoKSwgImNsYXNzIHsgc3RhdGljIG5hbWUoKSB7fSBjb25zdHJ1Y3Rv
cigpIHt9IH0iKTsKKyAgICB0ZXN0KGJheiwgImJhciIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKCkg
e30gfSIpOworICAgIHRlc3QoZ29vLCAiZ29vIiwgImNsYXNzIGV4dGVuZHMgZm9vIHsgY29uc3Ry
dWN0b3IoKSB7IHN1cGVyKHgpIH0gfSIpOworCisgICAgc2VjdGlvbiA9ICJib3VuZCBjbGFzcyB3
aXRoIGNvbnN0cnVjdG9yIGZyb20gZXhwcmVzc2lvbiI7CisgICAgeworICAgICAgICBsZXQgYm91
bmQxID0gZm9vLmJpbmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kMSwgImJvdW5kIG5hbWVkRm9v
IiwgImZ1bmN0aW9uIG5hbWVkRm9vKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0
IGJvdW5kMiA9IGJhci5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDIsICJib3VuZCBiYXIi
LCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5k
MyA9IGJheC5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDMsICJib3VuZCAiLCAiZnVuY3Rp
b24oKSB7IFtuYXRpdmUgY29kZV0gfSIpOyAvLyBiYXgubmFtZSBpcyBub3QgYSBzdHJpbmcuCisg
ICAgICAgIGxldCBib3VuZDQgPSBiYXouYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ0LCAi
Ym91bmQgYmFyIiwgImZ1bmN0aW9uIGJhcigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAg
IGxldCBib3VuZDUgPSBnb28uYmluZCh7fSk7CisgICAgICAgIHRlc3QoYm91bmQ1LCAiYm91bmQg
Z29vIiwgImZ1bmN0aW9uIGdvbygpIHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgfQorfSkoKTsK
Kworc2VjdGlvbiA9ICJjbGFzcyBpbiBvYmplY3QgcHJvcGVydHkiOworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBnb29CYXNlIHt9CisgICAgbGV0IG8gPSB7CisgICAgICAgIGZvbzogY2xhc3Mg
e30sCisgICAgICAgIGJhcjogY2xhc3Mge30sCisgICAgICAgIGJheDogY2xhc3MgeyBzdGF0aWMg
bmFtZSgpIHt9IH0sCisgICAgICAgIGdvbzogY2xhc3MgZXh0ZW5kcyBnb29CYXNlIHt9LAorICAg
IH07CisgICAgby5iYXkgPSBvLmJhcjsKKyAgICBvLmJheiA9IGNsYXNzIHt9OworCisgICAgdGVz
dChvLmZvbywgImZvbyIsICJjbGFzcyB7fSIpOworICAgIHRlc3Qoby5iYXIsICJiYXIiLCAiY2xh
c3Mge30iKTsKKyAgICBzaG91bGRCZSgidHlwZW9mIG8uYmF4Lm5hbWUgb2YgIiwgIm8uYmF4Iiwg
dHlwZW9mIG8uYmF4Lm5hbWUsICJmdW5jdGlvbiIpOworICAgIHNob3VsZEJlKCJ0b1N0cmluZyBv
ZiAiLCAiby5iYXgiLCBvLmJheC50b1N0cmluZygpLCAiY2xhc3MgeyBzdGF0aWMgbmFtZSgpIHt9
IH0iKTsKKyAgICB0ZXN0KG8uYmF5LCAiYmFyIiwgImNsYXNzIHt9Iik7CisgICAgdGVzdChvLmJh
eiwgIiIsICJjbGFzcyB7fSIpOworICAgIHRlc3Qoby5nb28sICJnb28iLCAiY2xhc3MgZXh0ZW5k
cyBnb29CYXNlIHt9Iik7CisKKyAgICBzZWN0aW9uID0gImJvdW5kIGNsYXNzIGluIG9iamVjdCBw
cm9wZXJ0eSI7CisgICAgeworICAgICAgICBsZXQgYm91bmQxID0gby5mb28uYmluZCh7fSk7Cisg
ICAgICAgIHRlc3QoYm91bmQxLCAiYm91bmQgZm9vIiwgImZ1bmN0aW9uIGZvbygpIHsgW25hdGl2
ZSBjb2RlXSB9Iik7CisgICAgICAgIGxldCBib3VuZDIgPSBvLmJhci5iaW5kKHt9KTsKKyAgICAg
ICAgdGVzdChib3VuZDIsICJib3VuZCBiYXIiLCAiZnVuY3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNv
ZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kMyA9IG8uYmF4LmJpbmQoe30pOworICAgICAgICB0
ZXN0KGJvdW5kMywgImJvdW5kICIsICJmdW5jdGlvbigpIHsgW25hdGl2ZSBjb2RlXSB9Iik7IC8v
IGJheC5uYW1lIGlzIG5vdCBhIHN0cmluZy4KKyAgICAgICAgbGV0IGJvdW5kNCA9IG8uYmF5LmJp
bmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kNCwgImJvdW5kIGJhciIsICJmdW5jdGlvbiBiYXIo
KSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQ1ID0gby5iYXouYmluZCh7
fSk7CisgICAgICAgIHRlc3QoYm91bmQ1LCAiYm91bmQgIiwgImZ1bmN0aW9uKCkgeyBbbmF0aXZl
IGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kNiA9IG8uZ29vLmJpbmQoe30pOworICAgICAg
ICB0ZXN0KGJvdW5kNiwgImJvdW5kIGdvbyIsICJmdW5jdGlvbiBnb28oKSB7IFtuYXRpdmUgY29k
ZV0gfSIpOworICAgIH0KK30pKCk7CisKK3NlY3Rpb24gPSAiY2xhc3Mgd2l0aCBjb25zdHJ1Y3Rv
ciBpbiBvYmplY3QgcHJvcGVydHkiOworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBnb29CYXNl
IHsgY29uc3RydWN0b3IoeCkge30gfQorICAgIGxldCBvID0geworICAgICAgICBmb286IGNsYXNz
IHsgY29uc3RydWN0b3IoeCkge30gfSwKKyAgICAgICAgYmFyOiBjbGFzcyB7IGNvbnN0cnVjdG9y
KCkge30gfSwKKyAgICAgICAgYmF4OiBjbGFzcyB7IHN0YXRpYyBuYW1lKCkge30gY29uc3RydWN0
b3IoKSB7fSB9LAorICAgICAgICBnb286IGNsYXNzIGV4dGVuZHMgZ29vQmFzZSB7IGNvbnN0cnVj
dG9yKCkgeyBzdXBlcig1KTsgfSB9LAorICAgIH07CisgICAgby5iYXkgPSBvLmJhcjsKKyAgICBv
LmJheiA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9OworCisgICAgdGVzdChvLmZvbywgImZv
byIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHt9IH0iKTsKKyAgICB0ZXN0KG8uYmFyLCAiYmFy
IiwgImNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7CisgICAgc2hvdWxkQmUoInR5cGVvZiBv
LmJheC5uYW1lIG9mICIsICJvLmJheCIsIHR5cGVvZiBvLmJheC5uYW1lLCAiZnVuY3Rpb24iKTsK
KyAgICBzaG91bGRCZSgidG9TdHJpbmcgb2YgIiwgIm8uYmF4Iiwgby5iYXgudG9TdHJpbmcoKSwg
ImNsYXNzIHsgc3RhdGljIG5hbWUoKSB7fSBjb25zdHJ1Y3RvcigpIHt9IH0iKTsKKyAgICB0ZXN0
KG8uYmF5LCAiYmFyIiwgImNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9Iik7CisgICAgdGVzdChv
LmJheiwgIiIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfSIpOworICAgIHRlc3Qoby5nb28s
ICJnb28iLCAiY2xhc3MgZXh0ZW5kcyBnb29CYXNlIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKDUp
OyB9IH0iKTsKKworICAgIHNlY3Rpb24gPSAiYm91bmQgY2xhc3Mgd2l0aCBjb25zdHJ1Y3RvciBp
biBvYmplY3QgcHJvcGVydHkiOworICAgIHsKKyAgICAgICAgbGV0IGJvdW5kMSA9IG8uZm9vLmJp
bmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kMSwgImJvdW5kIGZvbyIsICJmdW5jdGlvbiBmb28o
KSB7IFtuYXRpdmUgY29kZV0gfSIpOworICAgICAgICBsZXQgYm91bmQyID0gby5iYXIuYmluZCh7
fSk7CisgICAgICAgIHRlc3QoYm91bmQyLCAiYm91bmQgYmFyIiwgImZ1bmN0aW9uIGJhcigpIHsg
W25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAgIGxldCBib3VuZDMgPSBvLmJheC5iaW5kKHt9KTsK
KyAgICAgICAgdGVzdChib3VuZDMsICJib3VuZCAiLCAiZnVuY3Rpb24oKSB7IFtuYXRpdmUgY29k
ZV0gfSIpOyAvLyBiYXgubmFtZSBpcyBub3QgYSBzdHJpbmcuCisgICAgICAgIGxldCBib3VuZDQg
PSBvLmJheS5iaW5kKHt9KTsKKyAgICAgICAgdGVzdChib3VuZDQsICJib3VuZCBiYXIiLCAiZnVu
Y3Rpb24gYmFyKCkgeyBbbmF0aXZlIGNvZGVdIH0iKTsKKyAgICAgICAgbGV0IGJvdW5kNSA9IG8u
YmF6LmJpbmQoe30pOworICAgICAgICB0ZXN0KGJvdW5kNSwgImJvdW5kICIsICJmdW5jdGlvbigp
IHsgW25hdGl2ZSBjb2RlXSB9Iik7CisgICAgICAgIGxldCBib3VuZDYgPSBvLmdvby5iaW5kKHt9
KTsKKyAgICAgICAgdGVzdChib3VuZDYsICJib3VuZCBnb28iLCAiZnVuY3Rpb24gZ29vKCkgeyBb
bmF0aXZlIGNvZGVdIH0iKTsKKyAgICB9Cit9KSgpOworCitzZWN0aW9uID0gImdsb2JhbCBjbGFz
cyBzdGF0ZW1lbnQiOworLy8gQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIENvZGVDYWNoZSBiYWRuZXNz
IHRoYXQgY2FuIHJlc3VsdCBmcm9tIGdsb2JhbCBjbGFzcyBzdGF0ZW1lbnRzCisvLyB3aXRoIGlk
ZW50aWNhbCBib2RpZXMuCitjbGFzcyBnbG9iYWxDUzEgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVy
biB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9CisvLyBJZGVudGljYWwgY2xhc3MgYm9keSBh
cyBDUzEuCitjbGFzcyBnbG9iYWxDUzIgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0
dWZmKCkgeyByZXR1cm4gNTsgfSB9CisvLyBJZGVudGljYWwgY29uc3RydWN0b3IgYXMgQ1MyICYg
Q1MxLCBidXQgZGlmZmVyZW50IG90aGVyd2lzZS4KK2NsYXNzIGdsb2JhbENTMyB7IGNvbnN0cnVj
dG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7IH0gfQorCit0ZXN0KGds
b2JhbENTMSwgImdsb2JhbENTMSIsICJjbGFzcyBnbG9iYWxDUzEgeyBjb25zdHJ1Y3Rvcih4KSB7
IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cit0ZXN0KGdsb2JhbENTMiwg
Imdsb2JhbENTMiIsICJjbGFzcyBnbG9iYWxDUzIgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4
OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cit0ZXN0KGdsb2JhbENTMywgImdsb2JhbENT
MyIsICJjbGFzcyBnbG9iYWxDUzMgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZm
MygpIHsgcmV0dXJuIDE1OyB9IH0iKTsKKworc2VjdGlvbiA9ICJnbG9iYWwgY2xhc3MgZXhwcmVz
c2lvbiI7CisvLyBDaGVja2luZyBpZiB0aGVyZSBhcmUgQ29kZUNhY2hlIGJhZG5lc3MgdGhhdCBj
YW4gcmVzdWx0IGZyb20gZ2xvYmFsIGNsYXNzIGV4cHJlc3Npb25zCisvLyB3aXRoIGlkZW50aWNh
bCBib2RpZXMuCit2YXIgZ2xvYmFsQ0UxID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVy
biB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9CisvLyBJZGVudGljYWwgY2xhc3MgYm9keSBh
cyBDU0UxLgordmFyIGdsb2JhbENFMiA9IGNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4g
eDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfQorLy8gSWRlbnRpY2FsIGNvbnN0cnVjdG9yIGFz
IENTRTIgJiBDU0UxLCBidXQgZGlmZmVyZW50IG90aGVyd2lzZS4KK3ZhciBnbG9iYWxDRTMgPSBj
bGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7
IH0gfQorCit0ZXN0KGdsb2JhbENFMSwgImdsb2JhbENFMSIsICJjbGFzcyB7IGNvbnN0cnVjdG9y
KHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKK3Rlc3QoZ2xvYmFs
Q0UyLCAiZ2xvYmFsQ0UyIiwgImNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBz
dHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOwordGVzdChnbG9iYWxDRTMsICJnbG9iYWxDRTMiLCAi
Y2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmMygpIHsgcmV0dXJuIDE1
OyB9IH0iKTsKKworc2VjdGlvbiA9ICJjbGFzcyBzdGF0ZW1lbnRzIGluIGV2YWwiOworLy8gQ2hl
Y2tpbmcgaWYgdGhlcmUgYXJlIENvZGVDYWNoZSBiYWRuZXNzIHRoYXQgY2FuIHJlc3VsdCBmcm9t
IGNsYXNzIHN0YXRlbWVudHMgaW4KKy8vIGlkZW50aWNhbCBldmFsIHN0YXRlbWVudHMuCisoZnVu
Y3Rpb24gKCkgeworICAgIGxldCBib2R5MSA9ICJjbGFzcyBmb28geyBjb25zdHJ1Y3Rvcih4KSB7
IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9IjsKKyAgICAvLyBJZGVudGljYWwg
Y2xhc3MgYm9keSBhcyBib2R5MS4KKyAgICBsZXQgYm9keTIgPSAiY2xhc3MgZm9vIHsgY29uc3Ry
dWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSI7CisgICAgLy8g
SWRlbnRpY2FsIGNvbnN0cnVjdG9yIGFzIGJvZHkxICYgYm9keTIsIGJ1dCBkaWZmZXJlbnQgb3Ro
ZXJ3aXNlLgorICAgIGxldCBib2R5MyA9ICJjbGFzcyBmb28zIHsgY29uc3RydWN0b3IoeCkgeyBy
ZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9IjsKKworICAgIGxldCBiYXIxID0g
ZXZhbChib2R5MSk7CisgICAgbGV0IGJhcjIgPSBldmFsKGJvZHkyKTsKKyAgICBsZXQgYmFyMyA9
IGV2YWwoYm9keTMpOworICAgIGxldCBiYXI0ID0gZXZhbChib2R5MSk7CisKKyAgICB0ZXN0KGJh
cjEsICJmb28iLCAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVm
ZigpIHsgcmV0dXJuIDU7IH0gfSIpOworICAgIHRlc3QoYmFyMiwgImZvbyIsICJjbGFzcyBmb28g
eyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7
CisgICAgdGVzdChiYXIzLCAiZm9vMyIsICJjbGFzcyBmb28zIHsgY29uc3RydWN0b3IoeCkgeyBy
ZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9Iik7CisgICAgdGVzdChiYXI0LCAi
Zm9vIiwgImNsYXNzIGZvbyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7
IHJldHVybiA1OyB9IH0iKTsKK30pKCk7CisKK3NlY3Rpb24gPSAiY2xhc3MgZXhwcmVzc2lvbnMg
aW4gZXZhbCI7CisvLyBDaGVja2luZyBpZiB0aGVyZSBhcmUgQ29kZUNhY2hlIGJhZG5lc3MgdGhh
dCBjYW4gcmVzdWx0IGZyb20gY2xhc3MgZXhwcmVzc2lvbnMgaW4KKy8vIGlkZW50aWNhbCBldmFs
IHN0YXRlbWVudHMuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBib2R5MSA9ICJ2YXIgZm9vID0g
Y2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsg
fSB9OyBmb28iOworICAgIC8vIElkZW50aWNhbCBjbGFzcyBib2R5IGFzIGJvZHkxLgorICAgIGxl
dCBib2R5MiA9ICJ2YXIgZm9vID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9
IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9OyBmb28iOworICAgIC8vIElkZW50aWNhbCBjb25zdHJ1
Y3RvciBhcyBib2R5MSAmIGJvZHkyLCBidXQgZGlmZmVyZW50IG90aGVyd2lzZS4KKyAgICBsZXQg
Ym9keTMgPSAidmFyIGZvbzMgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0g
c3R1ZmYzKCkgeyByZXR1cm4gMTU7IH0gfTsgZm9vMyI7CisKKyAgICBsZXQgYmFyMSA9IGV2YWwo
Ym9keTEpOworICAgIGxldCBiYXIyID0gZXZhbChib2R5Mik7CisgICAgbGV0IGJhcjMgPSBldmFs
KGJvZHkzKTsKKyAgICBsZXQgYmFyNCA9IGV2YWwoYm9keTEpOworCisgICAgdGVzdChiYXIxLCAi
Zm9vIiwgImNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0
dXJuIDU7IH0gfSIpOworICAgIHRlc3QoYmFyMiwgImZvbyIsICJjbGFzcyB7IGNvbnN0cnVjdG9y
KHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKKyAgICB0ZXN0KGJh
cjMsICJmb28zIiwgImNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMo
KSB7IHJldHVybiAxNTsgfSB9Iik7CisgICAgdGVzdChiYXI0LCAiZm9vIiwgImNsYXNzIHsgY29u
c3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOworfSko
KTsKKworc2VjdGlvbiA9ICJjbGFzcyBzdGF0ZW1lbnRzIGluIGR5bmFtaWNhbGx5IGNyZWF0ZWQg
RnVuY3Rpb25zIjsKKy8vIENoZWNraW5nIGlmIHRoZXJlIGFyZSBDb2RlQ2FjaGUgYmFkbmVzcyB0
aGF0IGNhbiByZXN1bHQgZnJvbSBkeW5hbWljYWxseSBjcmVhdGVkCisvLyBGdW5jdGlvbiBvYmpl
Y3RzIHdpdGggY2xhc3Mgc3RhdGVtZW50cyBpbiBpZGVudGljYWwgYm9kaWVzLgorKGZ1bmN0aW9u
ICgpIHsKKyAgICBsZXQgYm9keTEgPSAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkgeyByZXR1
cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSByZXR1cm4gZm9vOyI7CisgICAgLy8gSWRl
bnRpY2FsIGNsYXNzIGJvZHkgYXMgYm9keTEuCisgICAgbGV0IGJvZHkyID0gImNsYXNzIGZvbyB7
IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0gcmV0
dXJuIGZvbzsiOworICAgIC8vIElkZW50aWNhbCBjb25zdHJ1Y3RvciBhcyBib2R5MSAmIGJvZHky
LCBidXQgZGlmZmVyZW50IG90aGVyd2lzZS4KKyAgICBsZXQgYm9keTMgPSAiY2xhc3MgZm9vMyB7
IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7IH0gfSBy
ZXR1cm4gZm9vMzsiOworCisgICAgbGV0IGJhcjEgPSBuZXcgRnVuY3Rpb24oYm9keTEpOworICAg
IGxldCBiYXIyID0gbmV3IEZ1bmN0aW9uKGJvZHkyKTsKKyAgICBsZXQgYmFyMyA9IG5ldyBGdW5j
dGlvbihib2R5Myk7CisKKyAgICB0ZXN0KGJhcjEoKSwgImZvbyIsICJjbGFzcyBmb28geyBjb25z
dHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7CisgICAg
dGVzdChiYXIyKCksICJmb28iLCAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4g
eDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOworICAgIHRlc3QoYmFyMygpLCAiZm9vMyIs
ICJjbGFzcyBmb28zIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJl
dHVybiAxNTsgfSB9Iik7Cit9KSgpOworCitzZWN0aW9uID0gImNsYXNzIGV4cHJlc3Npb25zIGlu
IGR5bmFtaWNhbGx5IGNyZWF0ZWQgRnVuY3Rpb25zIjsKKy8vIENoZWNraW5nIGlmIHRoZXJlIGFy
ZSBDb2RlQ2FjaGUgYmFkbmVzcyB0aGF0IGNhbiByZXN1bHQgZnJvbSBkeW5hbWljYWxseSBjcmVh
dGVkCisvLyBGdW5jdGlvbiBvYmplY3RzIHdpdGggY2xhc3MgZXhwcmVzc2lvbnMgaW4gaWRlbnRp
Y2FsIGJvZGllcy4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGJvZHkxID0gInZhciBmb28gPSBj
bGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9
IH07IHJldHVybiBmb287IjsKKyAgICAvLyBJZGVudGljYWwgY2xhc3MgYm9keSBhcyBib2R5MS4K
KyAgICBsZXQgYm9keTIgPSAidmFyIGZvbyA9IGNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1
cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfTsgcmV0dXJuIGZvbzsiOworICAgIC8vIElk
ZW50aWNhbCBjb25zdHJ1Y3RvciBhcyBib2R5MSAmIGJvZHkyLCBidXQgZGlmZmVyZW50IG90aGVy
d2lzZS4KKyAgICBsZXQgYm9keTMgPSAidmFyIGZvbzMgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgp
IHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7IH0gfTsgcmV0dXJuIGZvbzM7IjsK
KworICAgIGxldCBiYXIxID0gbmV3IEZ1bmN0aW9uKGJvZHkxKTsKKyAgICBsZXQgYmFyMiA9IG5l
dyBGdW5jdGlvbihib2R5Mik7CisgICAgbGV0IGJhcjMgPSBuZXcgRnVuY3Rpb24oYm9keTMpOwor
CisgICAgdGVzdChiYXIxKCksICJmb28iLCAiY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVy
biB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7CisgICAgdGVzdChiYXIyKCksICJmb28i
LCAiY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4g
NTsgfSB9Iik7CisgICAgdGVzdChiYXIzKCksICJmb28zIiwgImNsYXNzIHsgY29uc3RydWN0b3Io
eCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9Iik7Cit9KSgpOworCiAv
LyBGSVhNRTogVW5jb21tZW50IHRoZXNlIHdoZW4gd2UndmUgYWRkZWQgc3VwcG9ydCBmb3IgRnVu
Y3Rpb24ubmFtZSBvZiBjb21wdXRlZCBwcm9wZXJ0aWVzLgogLy8gc2VjdGlvbiA9ICJPYmplY3Qg
Y29tcHV0ZWQgc3RyaW5nIHByb3BlcnR5IjsKIC8vIHsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUt
b2JqZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk3OTcwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNDc0OCw3ICs0NzQ4LDcgQEAgRVhQUkVTU0lPTjogUGVyc29uID0gY2xh
c3MgUGVyc29uIHsgY29ucwogICAgICJfb2JqZWN0SWQiOiAiPGZpbHRlcmVkPiIsCiAgICAgIl9k
ZXNjcmlwdGlvbiI6ICJQZXJzb24iCiAgIH0sCi0gICJfZnVuY3Rpb25EZXNjcmlwdGlvbiI6ICJm
dW5jdGlvbiBQZXJzb24obmFtZSl7fSIKKyAgIl9mdW5jdGlvbkRlc2NyaXB0aW9uIjogImNsYXNz
IFBlcnNvbiB7IGNvbnN0cnVjdG9yKG5hbWUpe30gZ2V0IGZ1bGxOYW1lKCl7fSBtZXRob2ROYW1l
KHAxLCBwMil7fSB9IgogfQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc3MSw3ICs0NzcxLDcgQEAgRVhQUkVTU0lPTjogQWxwaGEg
PSBjbGFzcyBBIHsgbWV0aG9kQSgpewogICAgICJfb2JqZWN0SWQiOiAiPGZpbHRlcmVkPiIsCiAg
ICAgIl9kZXNjcmlwdGlvbiI6ICJCIgogICB9LAotICAiX2Z1bmN0aW9uRGVzY3JpcHRpb24iOiAi
ZnVuY3Rpb24gQigpIHsgc3VwZXIoLi4uYXJndW1lbnRzKTsgfSIKKyAgIl9mdW5jdGlvbkRlc2Ny
aXB0aW9uIjogImNsYXNzIEIgZXh0ZW5kcyBBbHBoYSB7IG1ldGhvZEIoKXt9IH0iCiB9CiAKIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>273757</attachid>
            <date>2016-03-11 13:00:09 -0800</date>
            <delta_ts>2016-03-11 13:00:27 -0800</delta_ts>
            <desc>diff of the old patch vs the current one: for your reviewing convenience.</desc>
            <filename>bug-155336-patch.diff</filename>
            <type>text/plain</type>
            <size>12122</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">NWM1CjwgQEAgLTEsMyArMSwxMzMgQEAKLS0tCj4gQEAgLTEsMyArMSwxMzcgQEAKMjhjMjgKPCAr
ICAgICAgICAxLiBBZGRlZCBtX2NsYXNzU291cmNlIHRvIEZ1bmN0aW9uRXhlY3V0YWJsZSAoYW5k
IGNvcnJlc3BvbmRpbmdseSB0bwotLS0KPiArICAgICAgICAxLiBBZGRlZCAibV9jbGFzc1NvdXJj
ZSIgdG8gRnVuY3Rpb25FeGVjdXRhYmxlIChhbmQgY29ycmVzcG9uZGluZ2x5IHRvCjM2YTM3LDQw
Cj4gKyAgICAgICAgICAgTm90ZTogRnVuY3Rpb25FeGVjdXRhYmxlIGRvZXMgbm90IGhhdmUgaXRz
IG93biBtX2NsYXNzU291cmNlLiAgSXQgYWx3YXlzIGdldHMKPiArICAgICAgICAgICBpdCBmcm9t
IGl0cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS4gIFRoaXMgaXMgb2sgdG8gZG8gYmVjYXVz
ZSBvdXIgQ29kZUNhY2hlCj4gKyAgICAgICAgICAgY3VycmVudGx5IGRvZXMgbm90IGNhY2hlIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlcyBmb3IgY2xhc3MgY29uc3RydWN0b3JzLgo+ICsKNTIw
YzUyNCw1MjUKPCBAQCAtNDQsNiArNDQsMTAgQEAgc3RydWN0IFBhcnNlckZ1bmN0aW9uSW5mbyB7
Ci0tLQo+IEBAIC00Myw3ICs0MywxMSBAQCBzdHJ1Y3QgUGFyc2VyRnVuY3Rpb25JbmZvIHsKPiAg
CjUyMyw1MjdjNTI4LDUzMwo8ICAgICAgY29uc3QgSWRlbnRpZmllciogY2xhc3NOYW1lID0gMDsK
PCArICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMDsKPCArICAgIHVuc2lnbmVkIGVuZE9mZnNl
dCA9IDA7CjwgKyAgICBpbnQgc3RhcnRMaW5lID0gMDsKPCArICAgIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uID0gMDsKLS0tCj4gLSAgICBjb25zdCBJZGVudGlmaWVyKiBjbGFzc05hbWUgPSAwOwo+ICsg
ICAgY29uc3QgSWRlbnRpZmllciogY2xhc3NOYW1lIHsgbnVsbHB0ciB9Owo+ICsgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgeyAwIH07Cj4gKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQgeyAwIH07Cj4g
KyAgICBpbnQgc3RhcnRMaW5lIHsgMCB9Owo+ICsgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4geyAw
IH07CjU1MSw1NjlkNTU2CjwgSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCjwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQo8IC0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTk3OTcwKQo8ICsrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQo8IEBAIC0xLDUg
KzEsNSBAQAo8ICAvKgo8IC0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo8ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCjwg
ICAqCjwgICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAo8ICAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPCBAQCAtNTEwLDYgKzUxMCw3IEBA
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFYKPCAgICAgIG1fcGFyYW1l
dGVyc1N0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZz
ZXQoKTsKPCAgICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRh
YmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKTsKPCAgICAgIG1fdHlwZVByb2ZpbGluZ0Vu
ZE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpOwo8
ICsgICAgbV9jbGFzc1NvdXJjZSA9IHVubGlua2VkRXhlY3V0YWJsZS0+Y2xhc3NTb3VyY2UoKTsK
PCAgfQo8ICAKPCAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKNTg1YzU3Mgo8ICsgICAgYm9vbCBpc0NsYXNzKCkgY29uc3QgeyByZXR1cm4gIW1fY2xhc3NT
b3VyY2UuaXNOdWxsKCk7IH0KLS0tCj4gKyAgICBib29sIGlzQ2xhc3MoKSBjb25zdCB7IHJldHVy
biAhY2xhc3NTb3VyY2UoKS5pc051bGwoKTsgfQo1OTNjNTgwCjwgKyAgICBjb25zdCBTb3VyY2VD
b2RlJiBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NTb3VyY2U7IH0KLS0tCj4g
KyAgICBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpOyB9CjU5Nyw2MDRkNTgzCjwgQEAgLTcwOCw2
ICs3MTAsNyBAQCBwcml2YXRlOgo8ICAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKPCAgICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVy
blN0YXRlbWVudFR5cGVTZXQ7CjwgICAgICBXcml0ZUJhcnJpZXI8SW5mZXJyZWRWYWx1ZT4gbV9z
aW5nbGV0b25GdW5jdGlvbjsKPCArICAgIFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKPCAgfTsK
PCAgCjwgICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCjY1NmM2MzUKPCBAQCAtMSwzICsxLDIyIEBA
Ci0tLQo+IEBAIC0xLDMgKzEsMjMgQEAKNjY5YTY0OQo+ICsgICAgICAgICoganMvZnVuY3Rpb24t
dG9TdHJpbmctdnMtbmFtZS5odG1sOgo3ODZhNzY3LDgxNwo+IEluZGV4OiBMYXlvdXRUZXN0cy9q
cy9mdW5jdGlvbi10b1N0cmluZy12cy1uYW1lLmh0bWwKPiA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gLS0tIExheW91
dFRlc3RzL2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXZzLW5hbWUuaHRtbAkocmV2aXNpb24gMTk3OTcw
KQo+ICsrKyBMYXlvdXRUZXN0cy9qcy9mdW5jdGlvbi10b1N0cmluZy12cy1uYW1lLmh0bWwJKHdv
cmtpbmcgY29weSkKPiBAQCAtNSw2ICs1LDQ2IEBACj4gIDwvaGVhZD4KPiAgPGJvZHk+Cj4gIDxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZnVuY3Rpb24tdG9TdHJpbmctdnMtbmFtZS5qcyI+PC9z
Y3JpcHQ+Cj4gKwo+ICs8c2NyaXB0Pgo+ICtmYWlsdXJlcyA9ICIiOwo+ICsKPiArc2VjdGlvbiA9
ICJnbG9iYWwgY2xhc3Mgc3RhdGVtZW50cyB3aXRoIGlkZW50aWNhbCBjbGFzcyBib2RpZXMgZnJv
bSBkaWZmZXJlbnQgc2NyaXB0cyI7Cj4gKzwvc2NyaXB0Pgo+ICs8IS0tIENhc2UgMTogQSBnbG9i
YWwgY2xhc3Mgc3RhdGVtZW50OiAtLT4KPiArICAgIDxzY3JpcHQ+Y2xhc3MgZ2xvYmFsQ2xhc3Mx
IHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfTwv
c2NyaXB0Pgo+ICsKPiArPCEtLSBDYXNlIDI6IFNhbWUgY2xhc3MgYm9keSBhcyBDYXNlIDEgYnV0
IGluZGVudGVkLiAtLT4KPiArICAgICAgICA8c2NyaXB0PmNsYXNzIGdsb2JhbENsYXNzMiB7IGNv
bnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH08L3Njcmlw
dD4KPiArCj4gKzwhLS0gQ2FzZSAzOiBTYW1lIGNsYXNzIGJvZHkgaW5kZW50ZWQgb24gdGhlIHNh
bWUgbGluZS4gLS0+Cj4gKzxzY3JpcHQ+Y2xhc3MgZ2xvYmFsQ2xhc3MzIHsgY29uc3RydWN0b3Io
eCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfTwvc2NyaXB0Pgo+ICsKPiAr
PHNjcmlwdD4KPiArc2VjdGlvbiA9ICJnbG9iYWwgY2xhc3MgZXhwcmVzc2lvbnMgd2l0aCBpZGVu
dGljYWwgY2xhc3MgYm9kaWVzIGZyb20gZGlmZmVyZW50IHNjcmlwdHMiOwo+ICs8L3NjcmlwdD4K
PiArPCEtLSBDYXNlIDE6IEEgZ2xvYmFsIGNsYXNzIGV4cHJlc3Npb246IC0tPgo+ICsgICAgPHNj
cmlwdD52YXIgZ2xvYmFsQ2xhc3NFeHByMSA9IGNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1
cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfTwvc2NyaXB0Pgo+ICsKPiArPCEtLSBDYXNl
IDI6IFNhbWUgY2xhc3MgYm9keSBhcyBDYXNlIDEgYnV0IGluZGVudGVkLiAtLT4KPiArICAgICAg
ICA8c2NyaXB0PnZhciBnbG9iYWxDbGFzc0V4cHIyID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7
IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9PC9zY3JpcHQ+Cj4gKwo+ICs8IS0t
IENhc2UgMzogU2FtZSBjbGFzcyBib2R5IGluZGVudGVkIG9uIHRoZSBzYW1lIGxpbmUuIC0tPgo+
ICs8c2NyaXB0PnZhciBnbG9iYWxDbGFzc0V4cHIzID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7
IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9PC9zY3JpcHQ+Cj4gKwo+ICs8c2Ny
aXB0Pgo+ICt0ZXN0KGdsb2JhbENsYXNzMSwgImdsb2JhbENsYXNzMSIsICJjbGFzcyBnbG9iYWxD
bGFzczEgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsg
fSB9Iik7Cj4gK3Rlc3QoZ2xvYmFsQ2xhc3MyLCAiZ2xvYmFsQ2xhc3MyIiwgImNsYXNzIGdsb2Jh
bENsYXNzMiB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1
OyB9IH0iKTsKPiArdGVzdChnbG9iYWxDbGFzczMsICJnbG9iYWxDbGFzczMiLCAiY2xhc3MgZ2xv
YmFsQ2xhc3MzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJu
IDU7IH0gfSIpOwo+ICsKPiArdGVzdChnbG9iYWxDbGFzc0V4cHIxLCAiZ2xvYmFsQ2xhc3NFeHBy
MSIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVy
biA1OyB9IH0iKTsKPiArdGVzdChnbG9iYWxDbGFzc0V4cHIyLCAiZ2xvYmFsQ2xhc3NFeHByMiIs
ICJjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1
OyB9IH0iKTsKPiArdGVzdChnbG9iYWxDbGFzc0V4cHIzLCAiZ2xvYmFsQ2xhc3NFeHByMyIsICJj
bGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9
IH0iKTsKPiArCj4gK2lmIChmYWlsdXJlQ291bnQpCj4gKyAgICB0aHJvdyBFcnJvcigiRm91bmQg
IiArIGZhaWx1cmVDb3VudCArICIgZmFpbHVyZXM6XG4iICsgZmFpbHVyZXMpOwo+ICs8L3Njcmlw
dD4KPiArCj4gIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KPiAgPC9ib2R5Pgo+ICA8L2h0bWw+Cjc5MSw4MDNjODIyCjwgQEAgLTMxLDggKzMxLDEw
IEBAIGZ1bmN0aW9uIHNob3VsZE5vdFRocm93KHMpIHsKPCAgZnVuY3Rpb24gc2hvdWxkQmUoYSwg
Yikgewo8ICAgICAgaWYgKGV2YWwoYSkgPT09IGV2YWwoYikpCjwgICAgICAgICAgdGVzdFBhc3Nl
ZChhICsgIjo6OiIgKyBiKTsKPCAtICAgIGVsc2UKPCArICAgIGVsc2Ugewo8ICAgICAgICAgIHRl
c3RGYWlsZWQoYSArICI6OjoiICsgYik7CjwgKyAgICAgICAgdGVzdEZhaWxlZCgiJyIgKyBldmFs
KGEpICsgIiciICsgIjo6OiIgKyAiJyIgKyBiICsgIiciKTsKPCArICAgIH0KPCAgfQo8ICAKPCAg
ZnVuY3Rpb24gc2hvdWxkQmVUcnVlKHMpIHsKPCBAQCAtNjgsMTUgKzcwLDE1IEBAIHJ1blRlc3RT
aG91bGRUaHJvdygiQSIpOwotLS0KPiBAQCAtNjgsMTUgKzY4LDE1IEBAIHJ1blRlc3RTaG91bGRU
aHJvdygiQSIpOwo4MjRjODQzCjwgQEAgLTkwLDI5ICs5MiwyOSBAQCBydW5UZXN0U2hvdWxkVGhy
b3coIihjbGFzcyBBIHt9KTsgQSIpOwotLS0KPiBAQCAtOTAsMjkgKzkwLDI5IEBAIHJ1blRlc3RT
aG91bGRUaHJvdygiKGNsYXNzIEEge30pOyBBIik7Cjg2MWM4ODAKPCBAQCAtMTI4LDUgKzEzMCw1
IEBAIHJ1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkKLS0tCj4gQEAgLTEy
OCw1ICsxMjgsNSBAQCBydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpCjg3
MmM4OTEKPCBAQCAtMjE4LDYgKzIxOCwyMDAgQEAgc2VjdGlvbiA9ICJvYmplY3Qgc2hvcnRoYW5k
IG1ldGhvZCI7Ci0tLQo+IEBAIC0yMTgsNiArMjE4LDMwNiBAQCBzZWN0aW9uID0gIm9iamVjdCBz
aG9ydGhhbmQgbWV0aG9kIjsKMTA2OWExMDg5LDExOTQKPiArc2VjdGlvbiA9ICJnbG9iYWwgY2xh
c3Mgc3RhdGVtZW50IjsKPiArLy8gQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIENvZGVDYWNoZSBiYWRu
ZXNzIHRoYXQgY2FuIHJlc3VsdCBmcm9tIGdsb2JhbCBjbGFzcyBzdGF0ZW1lbnRzCj4gKy8vIHdp
dGggaWRlbnRpY2FsIGJvZGllcy4KPiArY2xhc3MgZ2xvYmFsQ1MxIHsgY29uc3RydWN0b3IoeCkg
eyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfQo+ICsvLyBJZGVudGljYWwgY2xh
c3MgYm9keSBhcyBDUzEuCj4gK2NsYXNzIGdsb2JhbENTMiB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0
dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0KPiArLy8gSWRlbnRpY2FsIGNvbnN0cnVj
dG9yIGFzIENTMiAmIENTMSwgYnV0IGRpZmZlcmVudCBvdGhlcndpc2UuCj4gK2NsYXNzIGdsb2Jh
bENTMyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7
IH0gfQo+ICsKPiArdGVzdChnbG9iYWxDUzEsICJnbG9iYWxDUzEiLCAiY2xhc3MgZ2xvYmFsQ1Mx
IHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIp
Owo+ICt0ZXN0KGdsb2JhbENTMiwgImdsb2JhbENTMiIsICJjbGFzcyBnbG9iYWxDUzIgeyBjb25z
dHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cj4gK3Rl
c3QoZ2xvYmFsQ1MzLCAiZ2xvYmFsQ1MzIiwgImNsYXNzIGdsb2JhbENTMyB7IGNvbnN0cnVjdG9y
KHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7IH0gfSIpOwo+ICsKPiArc2Vj
dGlvbiA9ICJnbG9iYWwgY2xhc3MgZXhwcmVzc2lvbiI7Cj4gKy8vIENoZWNraW5nIGlmIHRoZXJl
IGFyZSBDb2RlQ2FjaGUgYmFkbmVzcyB0aGF0IGNhbiByZXN1bHQgZnJvbSBnbG9iYWwgY2xhc3Mg
ZXhwcmVzc2lvbnMKPiArLy8gd2l0aCBpZGVudGljYWwgYm9kaWVzLgo+ICt2YXIgZ2xvYmFsQ0Ux
ID0gY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4g
NTsgfSB9Cj4gKy8vIElkZW50aWNhbCBjbGFzcyBib2R5IGFzIENTRTEuCj4gK3ZhciBnbG9iYWxD
RTIgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVy
biA1OyB9IH0KPiArLy8gSWRlbnRpY2FsIGNvbnN0cnVjdG9yIGFzIENTRTIgJiBDU0UxLCBidXQg
ZGlmZmVyZW50IG90aGVyd2lzZS4KPiArdmFyIGdsb2JhbENFMyA9IGNsYXNzIHsgY29uc3RydWN0
b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9Cj4gKwo+ICt0ZXN0
KGdsb2JhbENFMSwgImdsb2JhbENFMSIsICJjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJu
IHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH0iKTsKPiArdGVzdChnbG9iYWxDRTIsICJnbG9i
YWxDRTIiLCAiY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyBy
ZXR1cm4gNTsgfSB9Iik7Cj4gK3Rlc3QoZ2xvYmFsQ0UzLCAiZ2xvYmFsQ0UzIiwgImNsYXNzIHsg
Y29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9Iik7
Cj4gKwo+ICtzZWN0aW9uID0gImNsYXNzIHN0YXRlbWVudHMgaW4gZXZhbCI7Cj4gKy8vIENoZWNr
aW5nIGlmIHRoZXJlIGFyZSBDb2RlQ2FjaGUgYmFkbmVzcyB0aGF0IGNhbiByZXN1bHQgZnJvbSBj
bGFzcyBzdGF0ZW1lbnRzIGluCj4gKy8vIGlkZW50aWNhbCBldmFsIHN0YXRlbWVudHMuCj4gKyhm
dW5jdGlvbiAoKSB7Cj4gKyAgICBsZXQgYm9keTEgPSAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3Io
eCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSI7Cj4gKyAgICAvLyBJZGVu
dGljYWwgY2xhc3MgYm9keSBhcyBib2R5MS4KPiArICAgIGxldCBib2R5MiA9ICJjbGFzcyBmb28g
eyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9IjsK
PiArICAgIC8vIElkZW50aWNhbCBjb25zdHJ1Y3RvciBhcyBib2R5MSAmIGJvZHkyLCBidXQgZGlm
ZmVyZW50IG90aGVyd2lzZS4KPiArICAgIGxldCBib2R5MyA9ICJjbGFzcyBmb28zIHsgY29uc3Ry
dWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9IjsKPiArCj4g
KyAgICBsZXQgYmFyMSA9IGV2YWwoYm9keTEpOwo+ICsgICAgbGV0IGJhcjIgPSBldmFsKGJvZHky
KTsKPiArICAgIGxldCBiYXIzID0gZXZhbChib2R5Myk7Cj4gKyAgICBsZXQgYmFyNCA9IGV2YWwo
Ym9keTEpOwo+ICsKPiArICAgIHRlc3QoYmFyMSwgImZvbyIsICJjbGFzcyBmb28geyBjb25zdHJ1
Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cj4gKyAgICB0
ZXN0KGJhcjIsICJmb28iLCAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsg
fSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOwo+ICsgICAgdGVzdChiYXIzLCAiZm9vMyIsICJj
bGFzcyBmb28zIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVy
biAxNTsgfSB9Iik7Cj4gKyAgICB0ZXN0KGJhcjQsICJmb28iLCAiY2xhc3MgZm9vIHsgY29uc3Ry
dWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOwo+ICt9KSgp
Owo+ICsKPiArc2VjdGlvbiA9ICJjbGFzcyBleHByZXNzaW9ucyBpbiBldmFsIjsKPiArLy8gQ2hl
Y2tpbmcgaWYgdGhlcmUgYXJlIENvZGVDYWNoZSBiYWRuZXNzIHRoYXQgY2FuIHJlc3VsdCBmcm9t
IGNsYXNzIGV4cHJlc3Npb25zIGluCj4gKy8vIGlkZW50aWNhbCBldmFsIHN0YXRlbWVudHMuCj4g
KyhmdW5jdGlvbiAoKSB7Cj4gKyAgICBsZXQgYm9keTEgPSAidmFyIGZvbyA9IGNsYXNzIHsgY29u
c3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfTsgZm9vIjsK
PiArICAgIC8vIElkZW50aWNhbCBjbGFzcyBib2R5IGFzIGJvZHkxLgo+ICsgICAgbGV0IGJvZHky
ID0gInZhciBmb28gPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYo
KSB7IHJldHVybiA1OyB9IH07IGZvbyI7Cj4gKyAgICAvLyBJZGVudGljYWwgY29uc3RydWN0b3Ig
YXMgYm9keTEgJiBib2R5MiwgYnV0IGRpZmZlcmVudCBvdGhlcndpc2UuCj4gKyAgICBsZXQgYm9k
eTMgPSAidmFyIGZvbzMgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1
ZmYzKCkgeyByZXR1cm4gMTU7IH0gfTsgZm9vMyI7Cj4gKwo+ICsgICAgbGV0IGJhcjEgPSBldmFs
KGJvZHkxKTsKPiArICAgIGxldCBiYXIyID0gZXZhbChib2R5Mik7Cj4gKyAgICBsZXQgYmFyMyA9
IGV2YWwoYm9keTMpOwo+ICsgICAgbGV0IGJhcjQgPSBldmFsKGJvZHkxKTsKPiArCj4gKyAgICB0
ZXN0KGJhcjEsICJmb28iLCAiY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0
dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cj4gKyAgICB0ZXN0KGJhcjIsICJmb28iLCAiY2xhc3Mg
eyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7
Cj4gKyAgICB0ZXN0KGJhcjMsICJmb28zIiwgImNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1
cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsgfSB9Iik7Cj4gKyAgICB0ZXN0KGJhcjQsICJm
b28iLCAiY2xhc3MgeyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1
cm4gNTsgfSB9Iik7Cj4gK30pKCk7Cj4gKwo+ICtzZWN0aW9uID0gImNsYXNzIHN0YXRlbWVudHMg
aW4gZHluYW1pY2FsbHkgY3JlYXRlZCBGdW5jdGlvbnMiOwo+ICsvLyBDaGVja2luZyBpZiB0aGVy
ZSBhcmUgQ29kZUNhY2hlIGJhZG5lc3MgdGhhdCBjYW4gcmVzdWx0IGZyb20gZHluYW1pY2FsbHkg
Y3JlYXRlZAo+ICsvLyBGdW5jdGlvbiBvYmplY3RzIHdpdGggY2xhc3Mgc3RhdGVtZW50cyBpbiBp
ZGVudGljYWwgYm9kaWVzLgo+ICsoZnVuY3Rpb24gKCkgewo+ICsgICAgbGV0IGJvZHkxID0gImNs
YXNzIGZvbyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1
OyB9IH0gcmV0dXJuIGZvbzsiOwo+ICsgICAgLy8gSWRlbnRpY2FsIGNsYXNzIGJvZHkgYXMgYm9k
eTEuCj4gKyAgICBsZXQgYm9keTIgPSAiY2xhc3MgZm9vIHsgY29uc3RydWN0b3IoeCkgeyByZXR1
cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSByZXR1cm4gZm9vOyI7Cj4gKyAgICAvLyBJ
ZGVudGljYWwgY29uc3RydWN0b3IgYXMgYm9keTEgJiBib2R5MiwgYnV0IGRpZmZlcmVudCBvdGhl
cndpc2UuCj4gKyAgICBsZXQgYm9keTMgPSAiY2xhc3MgZm9vMyB7IGNvbnN0cnVjdG9yKHgpIHsg
cmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1cm4gMTU7IH0gfSByZXR1cm4gZm9vMzsiOwo+ICsK
PiArICAgIGxldCBiYXIxID0gbmV3IEZ1bmN0aW9uKGJvZHkxKTsKPiArICAgIGxldCBiYXIyID0g
bmV3IEZ1bmN0aW9uKGJvZHkyKTsKPiArICAgIGxldCBiYXIzID0gbmV3IEZ1bmN0aW9uKGJvZHkz
KTsKPiArCj4gKyAgICB0ZXN0KGJhcjEoKSwgImZvbyIsICJjbGFzcyBmb28geyBjb25zdHJ1Y3Rv
cih4KSB7IHJldHVybiB4OyB9IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cj4gKyAgICB0ZXN0
KGJhcjIoKSwgImZvbyIsICJjbGFzcyBmb28geyBjb25zdHJ1Y3Rvcih4KSB7IHJldHVybiB4OyB9
IHN0dWZmKCkgeyByZXR1cm4gNTsgfSB9Iik7Cj4gKyAgICB0ZXN0KGJhcjMoKSwgImZvbzMiLCAi
Y2xhc3MgZm9vMyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYzKCkgeyByZXR1
cm4gMTU7IH0gfSIpOwo+ICt9KSgpOwo+ICsKPiArc2VjdGlvbiA9ICJjbGFzcyBleHByZXNzaW9u
cyBpbiBkeW5hbWljYWxseSBjcmVhdGVkIEZ1bmN0aW9ucyI7Cj4gKy8vIENoZWNraW5nIGlmIHRo
ZXJlIGFyZSBDb2RlQ2FjaGUgYmFkbmVzcyB0aGF0IGNhbiByZXN1bHQgZnJvbSBkeW5hbWljYWxs
eSBjcmVhdGVkCj4gKy8vIEZ1bmN0aW9uIG9iamVjdHMgd2l0aCBjbGFzcyBleHByZXNzaW9ucyBp
biBpZGVudGljYWwgYm9kaWVzLgo+ICsoZnVuY3Rpb24gKCkgewo+ICsgICAgbGV0IGJvZHkxID0g
InZhciBmb28gPSBjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7
IHJldHVybiA1OyB9IH07IHJldHVybiBmb287IjsKPiArICAgIC8vIElkZW50aWNhbCBjbGFzcyBi
b2R5IGFzIGJvZHkxLgo+ICsgICAgbGV0IGJvZHkyID0gInZhciBmb28gPSBjbGFzcyB7IGNvbnN0
cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1OyB9IH07IHJldHVybiBm
b287IjsKPiArICAgIC8vIElkZW50aWNhbCBjb25zdHJ1Y3RvciBhcyBib2R5MSAmIGJvZHkyLCBi
dXQgZGlmZmVyZW50IG90aGVyd2lzZS4KPiArICAgIGxldCBib2R5MyA9ICJ2YXIgZm9vMyA9IGNs
YXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVmZjMoKSB7IHJldHVybiAxNTsg
fSB9OyByZXR1cm4gZm9vMzsiOwo+ICsKPiArICAgIGxldCBiYXIxID0gbmV3IEZ1bmN0aW9uKGJv
ZHkxKTsKPiArICAgIGxldCBiYXIyID0gbmV3IEZ1bmN0aW9uKGJvZHkyKTsKPiArICAgIGxldCBi
YXIzID0gbmV3IEZ1bmN0aW9uKGJvZHkzKTsKPiArCj4gKyAgICB0ZXN0KGJhcjEoKSwgImZvbyIs
ICJjbGFzcyB7IGNvbnN0cnVjdG9yKHgpIHsgcmV0dXJuIHg7IH0gc3R1ZmYoKSB7IHJldHVybiA1
OyB9IH0iKTsKPiArICAgIHRlc3QoYmFyMigpLCAiZm9vIiwgImNsYXNzIHsgY29uc3RydWN0b3Io
eCkgeyByZXR1cm4geDsgfSBzdHVmZigpIHsgcmV0dXJuIDU7IH0gfSIpOwo+ICsgICAgdGVzdChi
YXIzKCksICJmb28zIiwgImNsYXNzIHsgY29uc3RydWN0b3IoeCkgeyByZXR1cm4geDsgfSBzdHVm
ZjMoKSB7IHJldHVybiAxNTsgfSB9Iik7Cj4gK30pKCk7Cj4gKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>