<?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>164037</bug_id>
          
          <creation_ts>2016-10-26 15:09:09 -0700</creation_ts>
          <short_desc>[JSC] Handle new_async_func / new_async_func_exp in DFG / FTL</short_desc>
          <delta_ts>2016-11-14 15:33:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1244914</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 15:09:09 -0700</bug_when>
    <thetext>[JSC] Handle new_async_func / new_async_func_exp in DFG / FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244921</commentid>
    <comment_count>1</comment_count>
      <attachid>292964</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 15:22:34 -0700</bug_when>
    <thetext>Created attachment 292964
Patch

Add DFG/FTL code for async functions. Blocked on https://bugs.webkit.org/show_bug.cgi?id=163760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245658</commentid>
    <comment_count>2</comment_count>
      <attachid>293174</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 10:51:36 -0700</bug_when>
    <thetext>Created attachment 293174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247203</commentid>
    <comment_count>3</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-01 19:51:09 -0700</bug_when>
    <thetext>Yusuke in particular (but also anyone else), how does this look? (It&apos;s been sitting here a few days :).

Obviously this won&apos;t help any with the parser regressions when the flag is enabled, hopefully I can take a look at those sometime this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247239</commentid>
    <comment_count>4</comment_count>
      <attachid>293174</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-02 00:05:13 -0700</bug_when>
    <thetext>Comment on attachment 293174
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());

Why is this safe to do? Seems like this could return null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247299</commentid>
    <comment_count>5</comment_count>
      <attachid>293174</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-02 06:37:04 -0700</bug_when>
    <thetext>Comment on attachment 293174
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt;&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());
&gt; 
&gt; Why is this safe to do? Seems like this could return null?

I believe the lazy structure is guaranteed to be initialized before optimization of it, by the baseline version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247664</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-02 23:31:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 293174 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293174&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt; &gt;&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());
&gt; &gt; 
&gt; &gt; Why is this safe to do? Seems like this could return null?
&gt; 
&gt; I believe the lazy structure is guaranteed to be initialized before
&gt; optimization of it, by the baseline version.

Why is that? What if the code never executes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247682</commentid>
    <comment_count>7</comment_count>
      <attachid>293174</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-03 03:22:27 -0700</bug_when>
    <thetext>Comment on attachment 293174
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt;&gt;&gt;&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());
&gt;&gt;&gt; 
&gt;&gt;&gt; Why is this safe to do? Seems like this could return null?
&gt;&gt; 
&gt;&gt; I believe the lazy structure is guaranteed to be initialized before optimization of it, by the baseline version.
&gt; 
&gt; Why is that? What if the code never executes?

Is there a situation where FTL graphs can be generated before baseline bytecode? If that is possible, I think we will want to test for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248440</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-04 21:52:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 293174 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=293174&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt; &gt;&gt;&gt;&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Why is this safe to do? Seems like this could return null?
&gt; &gt;&gt; 
&gt; &gt;&gt; I believe the lazy structure is guaranteed to be initialized before optimization of it, by the baseline version.
&gt; &gt; 
&gt; &gt; Why is that? What if the code never executes?
&gt; 
&gt; Is there a situation where FTL graphs can be generated before baseline
&gt; bytecode? If that is possible, I think we will want to test for that.

Yes, the following script crashes.

```
function test(cond)
{
    if (cond) {
        var func = async function () {
        };
        return func;
    }
    return 42;
}
noInline(test);

for (var i = 0; i &lt; 1e4; ++i)
    test();
```

I don&apos;t think we should rely on that. We easily miss the case.
I think non lazy thing should be better in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248535</commentid>
    <comment_count>9</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-05 13:30:07 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 293174 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=293174&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt; &gt; &gt;&gt;&gt;&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; Why is this safe to do? Seems like this could return null?
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; I believe the lazy structure is guaranteed to be initialized before optimization of it, by the baseline version.
&gt; &gt; &gt; 
&gt; &gt; &gt; Why is that? What if the code never executes?
&gt; &gt; 
&gt; &gt; Is there a situation where FTL graphs can be generated before baseline
&gt; &gt; bytecode? If that is possible, I think we will want to test for that.
&gt; 
&gt; Yes, the following script crashes.
&gt; 
&gt; ```
&gt; function test(cond)
&gt; {
&gt;     if (cond) {
&gt;         var func = async function () {
&gt;         };
&gt;         return func;
&gt;     }
&gt;     return 42;
&gt; }
&gt; noInline(test);
&gt; 
&gt; for (var i = 0; i &lt; 1e4; ++i)
&gt;     test();
&gt; ```
&gt; 
&gt; I don&apos;t think we should rely on that. We easily miss the case.
&gt; I think non lazy thing should be better in this case.

The main benefit of the lazy structure is compiling the asyncFunctionResume builtin lazily. Unfortunately, it seems to be impossible to use an ordinary LazyPeoperty for this, currently.

Building this builtin on code which doesn&apos;t need it (e.g all benchmarks) results in regressions due to the increased startup time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248651</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-06 14:52:18 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Comment on attachment 293174 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=293174&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:157
&gt; &gt; &gt; &gt;&gt;&gt;&gt; +                    registerStructure(m_graph.globalObjectFor(node-&gt;origin.semantic)-&gt;asyncFunctionStructureConcurrently());
&gt; &gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt; &gt;&gt;&gt; Why is this safe to do? Seems like this could return null?
&gt; &gt; &gt; &gt;&gt; 
&gt; &gt; &gt; &gt;&gt; I believe the lazy structure is guaranteed to be initialized before optimization of it, by the baseline version.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why is that? What if the code never executes?
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there a situation where FTL graphs can be generated before baseline
&gt; &gt; &gt; bytecode? If that is possible, I think we will want to test for that.
&gt; &gt; 
&gt; &gt; Yes, the following script crashes.
&gt; &gt; 
&gt; &gt; ```
&gt; &gt; function test(cond)
&gt; &gt; {
&gt; &gt;     if (cond) {
&gt; &gt;         var func = async function () {
&gt; &gt;         };
&gt; &gt;         return func;
&gt; &gt;     }
&gt; &gt;     return 42;
&gt; &gt; }
&gt; &gt; noInline(test);
&gt; &gt; 
&gt; &gt; for (var i = 0; i &lt; 1e4; ++i)
&gt; &gt;     test();
&gt; &gt; ```
&gt; &gt; 
&gt; &gt; I don&apos;t think we should rely on that. We easily miss the case.
&gt; &gt; I think non lazy thing should be better in this case.
&gt; 
&gt; The main benefit of the lazy structure is compiling the asyncFunctionResume
&gt; builtin lazily. Unfortunately, it seems to be impossible to use an ordinary
&gt; LazyPeoperty for this, currently.
&gt; 
&gt; Building this builtin on code which doesn&apos;t need it (e.g all benchmarks)
&gt; results in regressions due to the increased startup time.
This surprises me that this pushes us over on some benchmarks and is noticeable. What benchmarks are you seeing that compiling the builtin causes a noticeable slowdown?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251065</commentid>
    <comment_count>11</comment_count>
      <attachid>294725</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 11:53:40 -0800</bug_when>
    <thetext>Created attachment 294725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251066</commentid>
    <comment_count>12</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 11:55:37 -0800</bug_when>
    <thetext>In the newest patchset, the lazy class structure is no longer used (might be worth lazily compiling the builtin, to avoid apparent benchmark regressions). I&apos;ve added the test case from comment 8 to the test suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251068</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-14 12:00:22 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; In the newest patchset, the lazy class structure is no longer used (might be
&gt; worth lazily compiling the builtin, to avoid apparent benchmark
&gt; regressions). I&apos;ve added the test case from comment 8 to the test suite.

Nice! Could you paste performance numbers?
I would like to know the impact of that. I think it is small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251069</commentid>
    <comment_count>14</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 12:02:27 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; In the newest patchset, the lazy class structure is no longer used (might be
&gt; &gt; worth lazily compiling the builtin, to avoid apparent benchmark
&gt; &gt; regressions). I&apos;ve added the test case from comment 8 to the test suite.
&gt; 
&gt; Nice! Could you paste performance numbers?
&gt; I would like to know the impact of that. I think it is small.

once I have numbers to share, I&apos;ll paste them here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251088</commentid>
    <comment_count>15</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 12:33:25 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; In the newest patchset, the lazy class structure is no longer used (might be
&gt; &gt; &gt; worth lazily compiling the builtin, to avoid apparent benchmark
&gt; &gt; &gt; regressions). I&apos;ve added the test case from comment 8 to the test suite.
&gt; &gt; 
&gt; &gt; Nice! Could you paste performance numbers?
&gt; &gt; I would like to know the impact of that. I think it is small.
&gt; 
&gt; once I have numbers to share, I&apos;ll paste them here.

Default octane run:

```
VMs tested:
&quot;WithoutPatch&quot; at /Users/caitp/git/WebKit/WebKitBuild/WithoutPatch/JavaScriptCore.framework/Versions/A/Resources/jsc
&quot;WithPatch&quot; at /Users/caitp/git/WebKit/WebKitBuild/WithPatch/JavaScriptCore.framework/Versions/A/Resources/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                          WithoutPatch               WithPatch                                     

encrypt                 0.15126+-0.00541          0.14842+-0.00176         might be 1.0191x faster
decrypt                 2.60415+-0.12859          2.55074+-0.04184         might be 1.0209x faster
deltablue      x2       0.12590+-0.01974          0.12304+-0.00420         might be 1.0232x faster
earley                  0.23794+-0.00347          0.23679+-0.00243       
boyer                   4.04547+-0.03166    ^     3.92693+-0.05468       ^ definitely 1.0302x faster
navier-stokes  x2       4.60507+-0.05944          4.60082+-0.11198       
raytrace       x2       0.65420+-0.00899          0.65410+-0.01121       
richards       x2       0.07991+-0.00167          0.07941+-0.00256       
splay          x2       0.31743+-0.00703          0.31308+-0.00730         might be 1.0139x faster
regexp         x2      17.01311+-1.02205    ?    17.30320+-2.03705       ? might be 1.0171x slower
pdfjs          x2      39.98251+-1.24177         39.69165+-1.15526       
mandreel       x2      40.69541+-1.01094         39.68283+-0.88594         might be 1.0255x faster
gbemu          x2      28.75390+-0.28842         28.55844+-0.48394       
closure                 0.47163+-0.00477          0.46989+-0.01574       
jquery                  6.49217+-0.68149          6.33684+-0.14653         might be 1.0245x faster
box2d          x2       8.69406+-0.12519    ?     8.77782+-0.07552       ?
zlib           x2     329.95036+-17.57603   ?   334.79163+-19.78330      ? might be 1.0147x slower
typescript     x2     603.51654+-8.96355    ?   613.43915+-20.67173      ? might be 1.0164x slower

&lt;geometric&gt;             4.75141+-0.04543          4.72779+-0.04072         might be 1.0050x faster
```

I expect that the increased startup time plays a role, but it could be a relatively small role in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251091</commentid>
    <comment_count>16</comment_count>
      <attachid>294725</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-14 12:52:38 -0800</bug_when>
    <thetext>Comment on attachment 294725
Patch

r=me. Perf numbers are neutral.
It&apos;s time to open a bug enabling async/await!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251092</commentid>
    <comment_count>17</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 12:55:06 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 294725 [details]
&gt; Patch
&gt; 
&gt; r=me. Perf numbers are neutral.
&gt; It&apos;s time to open a bug enabling async/await!

Still have some work to do on the frontend performance :\ I&apos;ve been working on that today, but don&apos;t have a patch ready yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251094</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-14 12:59:34 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Comment on attachment 294725 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; r=me. Perf numbers are neutral.
&gt; &gt; It&apos;s time to open a bug enabling async/await!
&gt; 
&gt; Still have some work to do on the frontend performance :\ I&apos;ve been working
&gt; on that today, but don&apos;t have a patch ready yet.

:\, yeah, anyway, you can just open a bug for enabling async/await things :) (w/o patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251104</commentid>
    <comment_count>19</comment_count>
      <attachid>294725</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-14 13:17:25 -0800</bug_when>
    <thetext>Comment on attachment 294725
Patch

Clearing flags on attachment: 294725

Committed r208704: &lt;http://trac.webkit.org/changeset/208704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251105</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-14 13:17:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251162</commentid>
    <comment_count>21</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 14:40:27 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; Comment on attachment 294725 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; r=me. Perf numbers are neutral.
&gt; &gt; &gt; It&apos;s time to open a bug enabling async/await!
&gt; &gt; 
&gt; &gt; Still have some work to do on the frontend performance :\ I&apos;ve been working
&gt; &gt; on that today, but don&apos;t have a patch ready yet.
&gt; 
&gt; :\, yeah, anyway, you can just open a bug for enabling async/await things :)
&gt; (w/o patch)

I think https://bugs.chromium.org/p/v8/issues/detail?id=5390 is a blocker for shipping as well. Currently, we have a similar leak where each intermediate Promise is retained when ideally it should be discarded when it&apos;s no longer needed, creating a memory leak for these sorts of loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251180</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-14 15:29:05 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; &gt; Comment on attachment 294725 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; r=me. Perf numbers are neutral.
&gt; &gt; &gt; &gt; It&apos;s time to open a bug enabling async/await!
&gt; &gt; &gt; 
&gt; &gt; &gt; Still have some work to do on the frontend performance :\ I&apos;ve been working
&gt; &gt; &gt; on that today, but don&apos;t have a patch ready yet.
&gt; &gt; 
&gt; &gt; :\, yeah, anyway, you can just open a bug for enabling async/await things :)
&gt; &gt; (w/o patch)
&gt; 
&gt; I think https://bugs.chromium.org/p/v8/issues/detail?id=5390 is a blocker
&gt; for shipping as well. Currently, we have a similar leak where each
&gt; intermediate Promise is retained when ideally it should be discarded when
&gt; it&apos;s no longer needed, creating a memory leak for these sorts of loops.

Interesting. It seems that we can just split the promise chain to solve this issue, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251186</commentid>
    <comment_count>23</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-11-14 15:32:37 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; &gt; &gt; Comment on attachment 294725 [details]
&gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; r=me. Perf numbers are neutral.
&gt; &gt; &gt; &gt; &gt; It&apos;s time to open a bug enabling async/await!
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Still have some work to do on the frontend performance :\ I&apos;ve been working
&gt; &gt; &gt; &gt; on that today, but don&apos;t have a patch ready yet.
&gt; &gt; &gt; 
&gt; &gt; &gt; :\, yeah, anyway, you can just open a bug for enabling async/await things :)
&gt; &gt; &gt; (w/o patch)
&gt; &gt; 
&gt; &gt; I think https://bugs.chromium.org/p/v8/issues/detail?id=5390 is a blocker
&gt; &gt; for shipping as well. Currently, we have a similar leak where each
&gt; &gt; intermediate Promise is retained when ideally it should be discarded when
&gt; &gt; it&apos;s no longer needed, creating a memory leak for these sorts of loops.
&gt; 
&gt; Interesting. It seems that we can just split the promise chain to solve this
&gt; issue, right?

I&apos;m working on a fix for this, I will probably send it tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251187</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-14 15:33:52 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; &gt; &gt; &gt; Comment on attachment 294725 [details]
&gt; &gt; &gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; r=me. Perf numbers are neutral.
&gt; &gt; &gt; &gt; &gt; &gt; It&apos;s time to open a bug enabling async/await!
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Still have some work to do on the frontend performance :\ I&apos;ve been working
&gt; &gt; &gt; &gt; &gt; on that today, but don&apos;t have a patch ready yet.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; :\, yeah, anyway, you can just open a bug for enabling async/await things :)
&gt; &gt; &gt; &gt; (w/o patch)
&gt; &gt; &gt; 
&gt; &gt; &gt; I think https://bugs.chromium.org/p/v8/issues/detail?id=5390 is a blocker
&gt; &gt; &gt; for shipping as well. Currently, we have a similar leak where each
&gt; &gt; &gt; intermediate Promise is retained when ideally it should be discarded when
&gt; &gt; &gt; it&apos;s no longer needed, creating a memory leak for these sorts of loops.
&gt; &gt; 
&gt; &gt; Interesting. It seems that we can just split the promise chain to solve this
&gt; &gt; issue, right?
&gt; 
&gt; I&apos;m working on a fix for this, I will probably send it tonight.

Cool!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292964</attachid>
            <date>2016-10-26 15:22:34 -0700</date>
            <delta_ts>2016-10-28 10:51:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164037-20161026181845.patch</filename>
            <type>text/plain</type>
            <size>233000</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjYyZGM0NmE5N2I1YmM1M2E0ZmY1ZjNmNDMwM2ZkNTFkODUxZmYxLi45OGQxMThjZDQ1MGE0NGUz
MTE1ZjAwNTg3OWM5NTgwZTBkNWJhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMTAtMjYgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgbmV3X2FzeW5jX2Z1bmMgLyBuZXdfYXN5bmNfZnVu
Y19leHAgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgbmV3X2FzeW5jX2Z1bmMgLyBuZXdfYXN5
bmNfZnVuY19leHAgaW50byBERkcgYW5kIEZUTCwKKyAgICAgICAgaW4gbXVjaCB0aGUgc2FtZSBj
YXBhY2l0eSB0aGF0IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTQyMTYgYWRk
ZWQKKyAgICAgICAgREZHIC8gRlRMIHN1cHBvcnQgZm9yIGdlbmVyYXRvcnM6IGJ5IGFkZGluZyBu
ZXcgREZHIG5vZGVzIChOZXdBc3luY0Z1bmN0aW9uIGFuZAorICAgICAgICBQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbiksIHJhdGhlciB0aGFuIGV4dGVuZGluZyB0aGUgZXhpc3RpbmcgTmV3RnVuY3Rp
b24gbm9kZSB0eXBlLgorCisgICAgICAgIExpa2UgTmV3RnVuY3Rpb24gYW5kIFBoYW50b21OZXdG
dW5jdGlvbiwgYW5kIHRoZSBHZW5lcmF0b3IgdmFyaWFudHMsIGFsbG9jYXRpb24gb2YKKyAgICAg
ICAgYXN5bmMgd3JhcHBlciBmdW5jdGlvbnMgbWF5IGJlIGRlZmVycmVkIG9yIGVsaW1pbmF0ZWQg
ZHVyaW5nIHRoZSBhbGxvY2F0aW9uIHNpbmtpbmcKKyAgICAgICAgcGhhc2UuCisKKzIwMTYtMTAt
MjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBp
bXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBmdW5jdGlvbnMgZ2VuZXJhdGUgYnl0
ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3aGljaCBpcworICAgICAgICBoaWdo
bHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVtZW50YXRpb246CisgICAgICAgIAor
ICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5zbGF0aW9uOgorICAgICAgICBhc3lu
YyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAvLyBBZnRlciB0cmFuc2xhdGlvbjoK
KyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAgICAgICAgIGxldCBnZW5lcmF0b3Ig
PSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uKEBnZW5lcmF0b3Is
IEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwg
QGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQm9keSBvZiBh
c3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgQGdlbmVy
YXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JUaGlzOiB0aGlzLAorICAg
ICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8ZnJhbWUgc3RhdGU+LAorICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0
b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSk7CisgICAgICAg
IH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhwcmVzc2lvbnMgYXJlIGVxdWl2YWxl
bnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lvbnMsIGFuZCBlbWl0IGlkZW50aWNh
bCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1ZywgYXN5bmMgYXJyb3cgZnVuY3Rpb25z
IGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMgc3VwZXIgYmluZGluZ3MgaW4gYXN5
bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29yayBjb3JyZWN0bHkuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczogQWRkZWQuCisgICAgICAgIChh
c3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
c0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hc3lu
Y19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9u
U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6
U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNl
TW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEpOgor
ICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEp
OgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAg
IChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNGdW5jdGlvblByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFz
eW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rp
b25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246
OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0FzeW5j
RnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bGF6eUFz
eW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5
bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojphc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRseSk6CisKIDIwMTYtMTAtMjUg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RPTUpJ
VF0gVGVsbCBJREwgcmVzdWx0IHR5cGUgdG8gREZHIHRvIGRyb3AgdHlwZSBjaGVja3MgaW4gQUkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4N2Y3M2U1YTA3MGNjMTIyMWZj
OGQ0MjMyMjVjMzcxODYwNjQ5ZTQxLi5mMjlhNGUxOTk1OGRiMTgxN2ExMmE0MTZlNTNhZWY3OWNl
ZWVlYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02MzgsNiArNjM4
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0FycmF5Q29udmVu
dGlvbnMuY3BwCiAgICAgcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCisgICAgcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmNwcAogICAgIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5jcHAKQEAgLTcxNCw2ICs3MTYsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorICAgIHJ1bnRpbWUvSlNBc3luY0Z1bmN0
aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKICAgICBydW50aW1lL0pTQ2FsbGVlLmNwcApAQCAtMTI5OCw2ICsxMzAxLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRGF0ZVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjYzMDUzNzIwMjRlMWRkOTNhNGFjNzJk
MDI5MDZhMzIwMzA1NDY2Mi4uMjg1NGQ1ZTc5ODZkYjA5MWIyYjk4NGNhMGUzZjBmMjQ3OTBjMmI0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg5LDYg
Kzg5LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvRGF0ZVByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDZmMzY4MDQyMTQ1Yjg4YTIwYzllMmVmMGViN2JkZjgzMmYxOGUwZDMuLjk2ZGFl
NTgyOTYxMGI5NWYwOWQzMDlhMTMwMmRhNzRlZTcwYjYzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMjQ0LDYgKzEyNDQsMTIgQEAKIAkJNTNGRDA0RDMxRDdBQjI3NzAwMzI4
N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMTFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNh
bGxpbmdDb252ZW50aW9uLmNwcCAqLzsgfTsKIAkJNTNGRDA0RDQxRDdBQjI5MTAwMzI4N0QzIC8q
IFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5oICovOyB9OwogCQk1QzRFOEU5NjFEQkVCRTYyMDAzNkYxRkMgLyogSlNPTlBhcnNl
VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzRFOEU5NDFEQkVCREEyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgKi87IH07CisJCTVC
NzBDRkRFMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNG
OSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5
IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9u
LmNwcCAqLzsgfTsKKwkJNUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87
IH07CisJCTVCNzBDRkUxMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBD
RkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsK
KwkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMx
REI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQk1
QjcwQ0ZFMzFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkREMURC
NjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1
RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5
MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyog
dGVzdGFwaS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9
OwogCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBv
cnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0
ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU1Niw2ICszNTYyLDEzIEBA
CiAJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNhbGxpbmdDb252ZW50aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEU4RTk0MURCRUJEQTIwMDM2RjFGQyAv
KiBKU09OUGFyc2VUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEpTT05QYXJzZVRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRFOEU5NTFEQkVCREEyMDAzNkYxRkMgLyog
SlNPTlBhcnNlVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU09OUGFy
c2VUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvSlNPTlBhcnNlVGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkg
LyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVC
NzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkREMURCNjlFNUMw
MEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHls
aWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMwMEZC
RUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJbnRE
ZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERl
c2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTkzMCw2ICs1OTQzLDEw
IEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAq
LywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLywK
IAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCisJCQkJ
NUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Ki8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAvKiBB
dXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8qIEF1
eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEzMDZE
IC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8sCkBAIC02MTE1LDYgKzYxMzIsOCBAQAogCQkJ
CTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovLAogCQkJ
CTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCAq
LywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAqLywK
KwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLywK
KwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJ
CQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJ
CQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJ
CTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC03MzAzLDYg
KzczMjIsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3RvdHlw
ZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1Y3Rv
ci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyogQnVp
bHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKIAkJCQlERTI2RTkwMjFDQjVERDA1MDBEMkJF
ODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgwRDY2
RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCkBAIC03NzQxLDYgKzc3NjEs
NyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tNYXBJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkgLyog
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRTE5
QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkYx
NThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTgzMDksNiArODMzMCw3IEBACiAJCQkJN0MxODRFMUIxN0JFREJEMzAw
N0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMjMxN0JFRTI0
MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzFG
MUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LywKQEAgLTg0NTEsNiArODQ3Myw3IEBACiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYwIC8q
IE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYgLyog
Tm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBFMTZG
NUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTVC
NzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0
b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAgLyog
TnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBCMzQ0
NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMTcsNiArOTM0MCw3
IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2lu
dFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUzMURC
NjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIzQ29u
c3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTczMCw2ICs5NzU0LDcgQEAKIAkJ
CQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQx
MTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4RDA5IC8qIEFycmF5Q29udmVudGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJS
b3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTkwNyw2ICs5OTMyLDcgQEAKIAkJCQkxNDhG
MjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREM2
OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyog
Tm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMwMDZG
MDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyMkU1
QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNDc4ODJhZmM4YjBlM2UxNGFj
ZmRjN2M3YTEwNzA0YWYzMTM0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rp
b24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkK
K3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOworCisgICAgaWYgKHN0YXRlID09
PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JS
ZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhy
b3cpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFzeW5jIGZ1bmN0aW9uIGlsbGVnYWxseSBy
ZXN1bWVkIik7CisKKyAgICB0cnkgeworICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRl
ID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5A
Z2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwg
c3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7
CisgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3Rh
dGVFeGVjdXRpbmcpIHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
c29sdmUodmFsdWUpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAg
Z2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJyb3IpOworICAgIH0KKworICAgIHJldHVy
biBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1ZSkuQHRoZW4oCisgICAgICAgIGZ1bmN0aW9uKHZhbHVl
KSB7IHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHZhbHVlLCBAR2VuZXJh
dG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0sCisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IHJldHVy
biBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1l
TW9kZVRocm93KTsgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggNTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFjZWM3N2E1
NWZkNGZmNy4uODRhZTNiZGEyZjAwYjkwZDhmMWQyMzBmNjFiYWQwOTI4YzgxMTMxNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
MTA1LDYgKzEwNSw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAi
LCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0
b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19hc3luY19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc2V0X2Z1bmN0aW9uX25hbWUiLCAibGVuZ3RoIiA6IDMgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBkOTcz
YmNmYjEzN2MzMmMwYzZkZWVkZjNkZTBlMWRkOTQxNjU0YzZmLi4xNjJkYjI4MmNkNTUzOTA1MDE4
NTU3MTBjMjFlYmI0MTdmYTUwNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwg
SW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBv
cF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAg
IGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5n
OgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9y
ZXNvbHZlX3Njb3BlOgpAQCAtMTk2LDYgKzE5Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CiAgICAg
Y2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKQEAgLTM4OCw2ICszOTAsOCBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxs
X3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDViNzQ4M2Nm
ZWYzODc4YzI3MmUwMDhjYmRlYjc1MGRlMDYyN2Y4MTUuLmY3OTk5OTBiMWMzNzU4NjExOWM0NGZk
ZmU4MWQ4ZWE3NTVmYzg1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0xNDY0LDYgKzE0NjQsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7Cisg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJuZXdfYXN5bmNfZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3
X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTQ4MCw2ICsxNDg4LDE0
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKICAgICAg
ICAgICAgIGludCBmdW5jUmVnID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
bmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAyNWEzNTdiZjU2MTE2NDUwYzFi
MGUyNTVjOTc3MGEyM2FkM2UxOWVjLi5lOTE4YTkzYzI0ZTY3OGRlMTIyZDc1NTAxMTgxOTJkYjU3
N2YzMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KICAgICBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAg
ICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNv
bnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmFjNDA1NDEzYTZiMmZkZDk5NzI3
MmMyOGYwYzc0YTcyMzA2YTMzOC4uNmY1NThjZjdhOTc0Yzg1MzMzYmE4NTIzMDAyMThmZTIzMTIy
ZTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1
cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KICAgICAKLSAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIAogICAgIEpT
Qzo6RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4g
c3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBl
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThiY2Zk
NzM3M2Q1Y2UxN2YuLmQxNDk1NTE4NjM0ZjdlMWE2ODc3NTViODlhYmU3NGY2Mzc5NTgwNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxvY2st
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAg
aWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+
cGFyc2VNb2RlKCkpKQogICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJs
b2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdl
dCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVCbG9j
ay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0
cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKQEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5l
ZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9j
ay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFj
b2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJv
d0Z1bmN0aW9uKCkpKTsKIAotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMg
ImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFu
IHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JPckFz
eW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2VuZXJh
dG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1l
bnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVu
Y3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAgICAg
Ly8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZh
cmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAg
ICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29wZSB0
byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMg
YWx3YXlzIGluc3RhbnRpYXRlZC4KICAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5n
cyA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICBp
ZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkg
JiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3Zp
ZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3Zp
ZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9m
IGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgogICAg
ICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMg
YXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNl
IGl0IGZyb20gYSBnZW5lcmF0b3IuCkBAIC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogCiAgICAgZW1pdEVudGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JB
c3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVyYXRv
clJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3Bl
KCk7CiAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQo
KSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNl
TW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAgQVNT
RVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAgICBi
b29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2Nr
LT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBp
c0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmlt
cGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBp
c0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpAQCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2Rl
LCBVbmxpbmtlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNob3Vs
ZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRzICYm
ICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxkQ3Jl
YXRlQXJndW1lbnNWYXJpYWJsZSA9ICFoYXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAgICAg
ICAgICAgICYmICFTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlu
cyhtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1bWVu
dHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxl
ICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUgYXJn
dW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ugb2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwgYmUg
bG9hZGVkIGZyb20gcGFyZW50IHNjb3BlCiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVu
c1ZhcmlhYmxlICYmICFzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2Nv
cGUpIHsKQEAgLTU0OSw2ICs1NTEsMjkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dG
dW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAg
QVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkpOworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3Rl
ciA9IGFkZFZhcigpOworCisgICAgICAgIGlmIChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRW1pdCB0
b190aGlzIG9ubHkgd2hlbiBBc3luY0Z1bmN0aW9uQm9keSB1c2VzIGl0LgorICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU4NgorICAgICAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAg
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAg
ICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXROZXdPYmplY3QobV9n
ZW5lcmF0b3JSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBm
aWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1Rhcmdl
dFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTYwOCw3ICs2MzMsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogCiAgICAgLy8gV2UgbmVlZCBsb2FkIHxzdXBlcnwgJiB8dGhpc3wgZm9y
IGFycm93IGZ1bmN0aW9uIGJlZm9yZSBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0Fu
ZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrCiAgICAgLy8gaWYgd2UgaGF2ZSBkZWZhdWx0IHBhcmFt
ZXRlciBleHByZXNzaW9uLiBCZWNhdXNlIHxzdXBlcnwgJiB8dGhpc3wgdmFsdWVzIGNhbiBiZSB1
c2VkIHRoZXJlCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0g
cGFyc2VNb2RlICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoKFNvdXJjZVBh
cnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgIWlz
U2ltcGxlUGFyYW1ldGVyTGlzdCkgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNl
c1RoaXMoKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAg
ICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCkBA
IC02MjcsMTIgKzY1Miw0NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIEFsbCAi
YWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFt
ZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAgIC8v
IGJlY2F1c2UgYSBmdW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3
aWxsIHVzZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwg
VERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKKworICAgIFRyeURhdGEqIHRyeUZvcm1hbFBhcmFt
ZXRlcnNEYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNl
TW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICAgICAgUmVm
UHRyPExhYmVsPiB0cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQgPSBlbWl0TGFiZWwobmV3TGFiZWwo
KS5nZXQoKSk7CisgICAgICAgIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gcHVzaFRyeSh0cnlG
b3JtYWxQYXJhbWV0ZXJzU3RhcnQuZ2V0KCkpOworICAgIH0KKwogICAgIGluaXRpYWxpemVEZWZh
dWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2socGFyYW1ldGVycywg
aXNTaW1wbGVQYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uU3ltYm9sVGFibGUs
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMsIHNob3VsZENyZWF0ZUFyZ3VtZW50
c1ZhcmlhYmxlSW5QYXJhbWV0ZXJTY29wZSk7Ci0gICAgCisKKyAgICBpZiAoaXNBc3luY0Z1bmN0
aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3Qp
IHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkaWROb3RUaHJvdyA9IG5ld0xhYmVsKCk7CisgICAg
ICAgIGVtaXRKdW1wKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGV4Y2VwdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBj
YXRjaEhlcmUgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgICAgIHBvcFRyeUFu
ZEVtaXRDYXRjaCh0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSwgZXhjZXB0aW9uLmdldCgpLCB0aHJv
d25WYWx1ZS5nZXQoKSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6Q2F0Y2gpOworCisg
ICAgICAgIC8vIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRocm93blZhbHVlKTsKKyAgICAgICAg
VmFyaWFibGUgcHJvbWlzZVZhciA9IHZhcmlhYmxlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLlByb21pc2VQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZW1pdFJlc29sdmVTY29wZShuZXdUZW1wb3JhcnkoKSwgcHJvbWlzZVZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9taXNlQ29uc3RydWN0b3IgPSBlbWl0R2V0
RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJvbWlzZVZhciwgUmVzb2x2
ZU1vZGU6OlRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9t
aXNlUmVqZWN0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHByb21pc2VDb25zdHJ1Y3Rv
ci5nZXQoKSwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVqZWN0UHJpdmF0
ZU5hbWUoKSk7CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAx
KTsKKworICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBwcm9taXNlQ29uc3Ry
dWN0b3IuZ2V0KCkpOworICAgICAgICBlbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCks
IHRocm93blZhbHVlLmdldCgpKTsKKworICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmdW5j
dGlvbk5vZGUtPmZpcnN0TGluZSgpLCBmdW5jdGlvbk5vZGUtPnN0YXJ0T2Zmc2V0KCksIGZ1bmN0
aW9uTm9kZS0+bGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXN1bHQgPSBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgcHJvbWlzZVJlamVjdC5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxl
Q2FsbDo6Tm8pOworICAgICAgICBlbWl0UmV0dXJuKHJlc3VsdC5nZXQoKSk7CisKKyAgICAgICAg
ZW1pdExhYmVsKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICB9CisKICAgICAvLyBJZiB3ZSBkb24n
dCBoYXZlICBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9uLCB0aGVuIGxvYWRpbmcgfHRoaXN8
IGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvbiBtdXN0IGJlIGRvbmUKICAgICAvLyBhZnRlciBpbml0
aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkg
YmVjYXVzZSB0aGF0IGZ1bmN0aW9uIHNldHMgdXAgdGhlCiAgICAgLy8gU3ltYm9sVGFibGUgc3Rh
Y2sgYW5kIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkg
Y29uc3VsdHMgdGhlIFN5bWJvbFRhYmxlIHN0YWNrCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkg
eworICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlu
cyhwYXJzZU1vZGUpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICBpZiAoZnVu
Y3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHko
KSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmly
b25tZW50KCk7CiAgICAgCkBAIC02NDIsNyArNzAxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICAKICAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUgYXMg
dGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdlbmVy
YXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgogICAg
IC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5vdCBi
ZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JB
c3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CiAgICAgICAgIEFTU0VSVCht
X2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7CiAgICAgICAgIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4OwpA
QCAtMjY0NCw2ICsyNzAzLDIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRTZXR0
ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+aW5kZXgoKSk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKQor
eworICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQg
c3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNl
LgorICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNH
ZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysg
ZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKworICAgIGVtaXREaXJl
Y3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0aW9uLCBQcm9wZXJ0eU5v
ZGU6Oktub3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVn
aXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0
ZU5hbWUoKSwgJm1fdGhpc1JlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKwor
ICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGVtaXRMb2FkKG51
bGxwdHIsIGpzTnVtYmVyKDApKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBl
bWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworfQorCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBlbWl0T3Bj
b2RlKG9wX2RlbF9ieV9pZCk7CkBAIC0yOTg2LDYgKzMwNjAsMTEgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW8KICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0
aW9uTW9kZToKICAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKKyAgICAgICAgb3Bjb2Rl
SUQgPSBvcF9uZXdfYXN5bmNfZnVuY19leHA7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMwMDQsNyArMzA4Myw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQq
IGRzdCwgRnVuY0V4CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9kZSog
ZnVuYykKIHsKLSAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBmdW5jLT5tZXRhZGF0YSgpLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpOworICAg
IEFTU0VSVChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhm
dW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSkpOwogICAgIGVtaXROZXdGdW5jdGlvbkV4cHJl
c3Npb25Db21tb24oZHN0LCBmdW5jLT5tZXRhZGF0YSgpKTsKICAgICByZXR1cm4gZHN0OwogfQpA
QCAtMzAzOCw2ICszMTE3LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICB1bnNpZ25l
ZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1bmN0
aW9uKSk7CiAgICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpCiAgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3
X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0g
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSkKKyAgICAgICAgZW1pdE9wY29kZShv
cF9uZXdfYXN5bmNfZnVuYyk7CiAgICAgZWxzZQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19m
dW5jKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAppbmRleCBkNGMxYzhlOGVlYTg4YjFjMjBmNGE5NWU0NTM2OTJjY2RlNDliZmJmLi43YzAxNzI5
MTYzNTFjZmEwYzRmMzg1MzRiODZlNGNlNWVlNzFjNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01NzYs
NyArNTc2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0ZXJT
ZXR0ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFJlZ2lzdGVySUQqIGdldHRlciwgUmVnaXN0ZXJJRCogc2V0dGVyKTsK
ICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIHVuc2lnbmVkIHByb3BlcnR5RGVzY3JpcHRvck9wdGlvbnMsIFJlZ2lz
dGVySUQqIGdldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNpZ25lZCBwcm9wZXJ0eURlc2NyaXB0
b3JPcHRpb25zLCBSZWdpc3RlcklEKiBzZXR0ZXIpOwotICAgICAgICAKKworICAgICAgICAvLyBJ
bml0aWFsaXplIG9iamVjdCB3aXRoIGdlbmVyYXRvciBmaWVsZHMgKEBnZW5lcmF0b3JUaGlzLCBA
Z2VuZXJhdG9yTmV4dCwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yRnJhbWUpCisgICAgICAg
IHZvaWQgZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pOwor
CiAgICAgICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIo
Y29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVu
dHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxs
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxJblRhaWxQb3NpdGlvbihSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMm
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsK
QEAgLTg0Miw3ICs4NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAg
ICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZTsKIAotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBpZiAo
U291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobWV0YWRhdGEt
PnBhcnNlTW9kZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCBpc0Rlcml2ZWRDbGFzc0Nv
bnRleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCBkMzg3Y2RmODE1MDM4NTQ0MWEzNGU5NjNkNmI4YTI4MGFmMDMy
NDAyLi5lZjJjNWU2MDI0ZTQxNTQ0NDE2MmJkZmQ1ZmVlZWE4NTA1ODRjZmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0zNDAyLDI1ICszNDAyLDY0IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgICAgICBlbWl0
UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0KCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUg
YW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3Bl
cnRpZXMgZm9yIGVhc2UuCi0gICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ug
d2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRv
ciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0
aWVzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTQ1CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5leHQuZ2V0
KCkpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2Vu
ZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQg
PSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNpbmdsZVN0YXRlbWVu
dC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogZXhwclN0
YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVtZW50
KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIgPSBleHByU3RhdGVtZW50LT5leHByKCk7
CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAgRnVuY0V4
cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpOwogCi0g
ICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcigwKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGluaXRpYWxTdGF0ZSwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBu
ZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJl
Y3QpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGlu
Zzo6TmVlZGVkIHx8IGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBhbHdh
eXMgbG9hZCBob21lIG9iamVjdCBmb3IgYXN5bmMgYXJyb3dzCisgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRv
cik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCks
IGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRHZW5lcmF0b3JGaWVsZHMobmV4dC5nZXQoKSk7CiAKICAgICAgICAgQVNTRVJUKHN0YXJ0T2Zm
c2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVT
dGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIGxvYWQgQGFzeW5jRnVuY3Rpb25SZXN1
bWUsIGFuZCBjYWxsLgorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3RhcnRBc3luY0Z1bmN0
aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBhdXRvIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFz
eW5jRnVuY3Rpb25SZXN1bWVQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRv
ci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhy
b3dJZk5vdEZvdW5kKTsKKworICAgICAgICAvLyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUu
QGNhbGwodGhpcywgQGdlbmVyYXRvciwgQHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSkKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0
ciwgMyk7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQgPSAwOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3Vu
dCsrKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5kZWZp
bmVkKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVy
KGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAg
IC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0
T2Zmc2V0KQorICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmaXJzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXN1bHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJlc3VsdC5nZXQoKSwgc3RhcnRBc3luY0Z1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZvdCwgZGl2b3QsIERlYnVn
Z2FibGVDYWxsOjpObyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJlc3VsdC5nZXQo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZTogewogICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNWQy
YzgxMTQyNzcxYTQ5ZDlhYWY1M2Y3MTMxZDQyYjhlMmIzNTUxNC4uN2U2YjdjMThlOTljMDk3ZDBj
M2UyZDcyMTRiMmY5YzUzOTgwNTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTk0Nyw2ICsx
OTQ3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2Vu
ZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBj
YXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3Vt
ZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CkBAIC0xOTg2LDYgKzE5ODcs
MTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBOZXdBc3lu
Y0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAgICAgICAgIG1fZ3Jh
cGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRseSgpKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKICAgICAg
ICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDA2MDMxNjhkOTIxNGMzNGIxNGNj
YjcxMGM5MzBkZTRkMjhjMjgxNjkuLjUzZjhiNTMwMjQ5MzQ3YTg0NjFjZmMzNWE4ZTY4MjEzYmM4
MDM1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC01MjQzLDIzICs1MjQzLDMxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIG9wX25ld19mdW5jOgotICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogewor
ICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICAgICAgY2FzZSBvcF9uZXdf
YXN5bmNfZnVuYzogewogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBkZWNsID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0g
bV9ncmFwaC5mcmVlemVTdHJvbmcoZGVjbCk7Ci0gICAgICAgICAgICBOb2RlVHlwZSBvcCA9IChv
cGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpID8gTmV3R2VuZXJhdG9yRnVuY3Rpb24g
OiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIE5vZGVUeXBlIG9wID0gKG9wY29kZUlEID09IG9w
X25ld19nZW5lcmF0b3JfZnVuYykgPyBOZXdHZW5lcmF0b3JGdW5jdGlvbiA6CisgICAgICAgICAg
ICAgICAgKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jKSA/IE5ld0FzeW5jRnVuY3Rpb24g
OgorICAgICAgICAgICAgICAgIE5ld0Z1bmN0aW9uOwogICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChvcCwg
T3BJbmZvKGZyb3plbiksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgo
b3BfbmV3X2Z1bmMpID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2dlbmVyYXRvcl9mdW5jKSwgIlRo
ZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmMgc2hvdWxkIGVxYXVhbCB0byBvbmUgb2Ygb3BfbmV3X2dl
bmVyYXRvcl9mdW5jIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgo
b3BfbmV3X2Z1bmMpID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2FzeW5jX2Z1bmMpLCAiVGhlIGxl
bmd0aCBvZiBvcF9uZXdfZnVuYyBzaG91bGQgZXFhdWFsIHRvIG9uZSBvZiBvcF9uZXdfYXN5bmNf
ZnVuYyIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmMpOwogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Ci0gICAgICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cDogeworICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHA6CisgICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4cHIgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmZ1bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhleHByKTsK
LSAgICAgICAgICAgIE5vZGVUeXBlIG9wID0gKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHApID8gTmV3R2VuZXJhdG9yRnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAg
ICAgIE5vZGVUeXBlIG9wID0gKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHAp
ID8gTmV3R2VuZXJhdG9yRnVuY3Rpb24gOgorICAgICAgICAgICAgICAgIChvcGNvZGVJRCA9PSBv
cF9uZXdfYXN5bmNfZnVuY19leHApID8gTmV3QXN5bmNGdW5jdGlvbiA6CisgICAgICAgICAgICAg
ICAgTmV3RnVuY3Rpb247CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJvemVuKSwg
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsK
LSAgICAgICAgICAgIAorICAgIAogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENPREVfTEVO
R1RIKG9wX25ld19mdW5jX2V4cCkgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3VsZCBlcWF1YWwgdG8g
b25lIG9mIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuY19leHApID09IE9QQ09ERV9MRU5HVEgob3Bf
bmV3X2FzeW5jX2Z1bmNfZXhwKSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3Vs
ZCBlcWF1YWwgdG8gb25lIG9mIG9wX25ld19hc3luY19mdW5jX2V4cCIpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYzMyM2Q0NmZiYzNjZjVj
MTA0OWZhMjZmYzBlMTkwZjIyNzFhNDcxOC4uMWJhNjhhMDQyMWJjYjRhYmM4YTUwODg3N2NlMTJj
OTEyYjVhNWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMjM2LDYgKzIzNiw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAg
Y2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5j
X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6CiAgICAgY2FzZSBvcF9zZXRf
ZnVuY3Rpb25fbmFtZToKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogog
ICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKaW5kZXggMGJlODFhZWJhMjMzOTQyMWQyNTk2ZDc4NmI0MTE0NjQ4NjM1
NzBmZS4uNzQ2ZmRmMjE4NWQ4OTA2MWM1OTY2NTdhYmQxOTYzMjM2YjRjMWU4NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEyMTIsNiArMTIxMiw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0
b3JGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2
YXRpb246CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50KTsKQEAgLTEyMjAsNiArMTIyMSw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgog
ICAgICAgICBpZiAobm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+aXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICB3cml0ZShXYXRj
aHBvaW50X2ZpcmUpOwogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IGJk
MzM5Yjg5YTUxMjRiM2Y3NDczYWExMmE3ZDQwODk2MGIwY2VmZjMuLjkxZmIyNzExZWY5MWU5ZjVj
MTMwYmRhYzk2NTMxYjcyMmE5NjE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC02Miw2ICs2Miw3IEBAIGJvb2wgY2xv
YmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQ
aGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5j
dGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTWF0ZXJp
YWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CkBAIC04MCw2
ICs4MSw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgLy8gTGlrZSBhYm92ZSwgYnV0
IHdpdGggdGhlIEpTRnVuY3Rpb24gYWxsb2NhdGlvbiBjYXZlYXQuCiAgICAgICAgIHJldHVybiBu
b2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlv
bigpLT5pc1N0aWxsVmFsaWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IGYzNWI2NmNlMTdlNDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1N2VhZTQuLjdlY2Zj
ZGQzN2Q5Y2Q3OGFkMGM1N2I2YmZkOTJlNzJmZGNlOTM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI0NCw2ICsyNDQsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
Q3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAg
Y2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgpAQCAtMjg0LDYgKzI4NSw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNh
c2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNl
IE5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVGhy
b3dTdGF0aWNFcnJvcjoKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGRiYzEwMTc1MjI2NDVl
MDlmZTlhYzQ0MTYzOGI2YzFmZTViM2M3MWEuLjgzYmE1YzAzNjU4YzIzOWI1YWE2MWFhZGUzNWY2
NTZjYTUzZTBkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTM5Niw2ICsxMzk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQaGFudG9t
TmV3T2JqZWN0OgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAg
ICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xv
bmVkQXJndW1lbnRzOgpAQCAtMTU1MSw3ICsxNTUyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5j
dGlvbjogeworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNl
IE5ld0FzeW5jRnVuY3Rpb246IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDgwYjMzNzRiM2VkOWUzNDAwMTZjMmMyNmY1
YTU4MGM4M2M2MDQyNzguLmZiYmIxYjk5ZmUwOWIwZWU0ZTQzNzRhZDM2OWYxNzNmM2U2YzUxOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA2LDYgKzEw
Niw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3Rh
dGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2Ug
TmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5l
d0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBUb051
bWJlcjoKICAgICAgICAgcmVzdWx0ID0gRXhpdHNGb3JFeGNlcHRpb25zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCAwZDFhNGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0
MzY0ZDNiLi4wNjM3N2QyYWViZDA4ZmJmOGJlZTJmZmViNWYzNDU5NjIyMGY0NDQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTg0LDcgKzU4NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY29udmVydFRvUGhhbnRvbU5ld0Z1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3AgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24p
OworICAgICAgICBBU1NFUlQobV9vcCA9PSBOZXdGdW5jdGlvbiB8fCBtX29wID09IE5ld0dlbmVy
YXRvckZ1bmN0aW9uIHx8IG1fb3AgPT0gTmV3QXN5bmNGdW5jdGlvbik7CiAgICAgICAgIG1fb3Ag
PSBQaGFudG9tTmV3RnVuY3Rpb247CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0
ZTsKICAgICAgICAgbV9vcEluZm8gPSBPcEluZm9XcmFwcGVyKCk7CkBAIC02MDIsNiArNjAyLDE2
IEBAIHB1YmxpYzoKICAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CiAgICAgfQog
CisgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3QXN5bmNGdW5jdGlvbigpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9vcCA9PSBOZXdBc3luY0Z1bmN0aW9uKTsKKyAgICAgICAgbV9vcCA9IFBo
YW50b21OZXdBc3luY0Z1bmN0aW9uOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJh
dGU7CisgICAgICAgIG1fb3BJbmZvID0gT3BJbmZvV3JhcHBlcigpOworICAgICAgICBtX29wSW5m
bzIgPSBPcEluZm9XcmFwcGVyKCk7CisgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgp
OworICAgIH0KKwogICAgIHZvaWQgY29udmVydFRvUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24oKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRlQWN0aXZhdGlvbiB8fCBtX29wID09
IE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbik7CkBAIC0xNDg1LDYgKzE0OTUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgTmV3
RnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNh
c2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBOZXdS
ZWdleHA6CkBAIC0xNzIwLDYgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3Ao
KSkgewogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZ1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3MzEsNiArMTc0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAg
ICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTc0NSw2ICsxNzU4LDcgQEAgcHVibGljOgogICAgICAgICBjYXNl
IFBoYW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgogICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDc1YWE2MmUxMjU2NzBhMzVj
YzA4ZjIxN2QzYzE3NDdjYjA0ZjA5MzQuLmE0ODNmMTFkMTY1MzcwODhmMjczMzc5ODUyMTA1NjRj
MGY5ODQ4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTMw
NSw2ICszMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
TWF0ZXJpYWxpemVOZXdPYmplY3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAg
ICAgbWFjcm8oUGhhbnRvbU5ld0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUGhhbnRvbU5ld0FzeW5jRnVuY3Rp
b24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9t
Q3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZUhh
c1ZhckFyZ3MpIFwKICAgICBcCkBAIC0zNTEsNiArMzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgXAorICAgIG1hY3JvKE5ld0FzeW5jRnVuY3Rpb24sIE5vZGVSZXN1
bHRKUykgXAorICAgIFwKICAgICAvKiBUaGVzZSBhcmVuJ3QgdGVybWluYWxzIGJ1dCBhbHdheXMg
ZXhpdCAqLyBcCiAgICAgbWFjcm8oVGhyb3csIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhUaHJvd1N0YXRpY0Vycm9yLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAppbmRleCA4MWMzMDYxNjkxN2E1ODFiMTEwZmI2NjU1YTlmYjI4NjkxN2I3MTY3Li4y
YmU0M2Y5M2Q0ODg0YWU3NGVmZjI4NmZlYjc5MDdmN2VlOTZlNTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgLy8gb25jZSBpdCBp
cyBlc2NhcGVkIGlmIGl0IHN0aWxsIGhhcyBwb2ludGVycyB0byBpdCBpbiBvcmRlciB0bwogICAg
IC8vIHJlcGxhY2UgYW55IHVzZSBvZiB0aG9zZSBwb2ludGVycyBieSB0aGUgY29ycmVzcG9uZGlu
ZwogICAgIC8vIG1hdGVyaWFsaXphdGlvbgotICAgIGVudW0gY2xhc3MgS2luZCB7IEVzY2FwZWQs
IE9iamVjdCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIEdlbmVyYXRvckZ1bmN0aW9uIH07CisgICAg
ZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwgT2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiwg
R2VuZXJhdG9yRnVuY3Rpb24sIEFzeW5jRnVuY3Rpb24gfTsKIAogICAgIGV4cGxpY2l0IEFsbG9j
YXRpb24oTm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtpbmQga2luZCA9IEtpbmQ6OkVzY2Fw
ZWQpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCkBAIC0yMzMsNyArMjMzLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Z1bmN0aW9uQWxsb2NhdGlvbigpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OkZ1bmN0aW9uIHx8IG1fa2luZCA9PSBL
aW5kOjpHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpG
dW5jdGlvbiB8fCBtX2tpbmQgPT0gS2luZDo6R2VuZXJhdG9yRnVuY3Rpb24gfHwgbV9raW5kID09
IEtpbmQ6OkFzeW5jRnVuY3Rpb247CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEFsbG9jYXRpb24mIG90aGVyKSBjb25zdApAQCAtMjczLDYgKzI3MywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBvdXQucHJpbnQoIkdlbmVyYXRvckZ1bmN0aW9uIik7CiAgICAgICAgICAgICBi
cmVhazsKIAorICAgICAgICBjYXNlIEtpbmQ6OkFzeW5jRnVuY3Rpb246CisgICAgICAgICAgICBv
dXQucHJpbnQoIkFzeW5jRnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgS2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlv
biIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04MzIsMTYgKzgzNiwyMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1
bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246IHsKICAgICAgICAgICAgIGlm
IChpc1N0aWxsVmFsaWQobm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKS0+
c2luZ2xldG9uRnVuY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICBtX2hlYXAuZXNjYXBlKG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gTmV3R2Vu
ZXJhdG9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxv
Y2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gTmV3QXN5bmNGdW5jdGlvbikKKyAgICAgICAg
ICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlvbjo6
S2luZDo6QXN5bmNGdW5jdGlvbik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
dGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1
bmN0aW9uKTsKKwogICAgICAgICAgICAgd3JpdGVzLmFkZChGdW5jdGlvbkV4ZWN1dGFibGVQTG9j
LCBMYXp5Tm9kZShub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRk
KEZ1bmN0aW9uQWN0aXZhdGlvblBMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDQ0LDEyICsxNDUyLDI1IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgT3BJbmZvKHNldCksIE9wSW5mbyhkYXRhKSwgMCwgMCk7CiAgICAgICAg
IH0KIAorICAgICAgICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkFzeW5jRnVuY3Rpb246CiAgICAg
ICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNh
c2UgQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIEZyb3plblZhbHVl
KiBleGVjdXRhYmxlID0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCktPmNlbGxPcGVyYW5kKCk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0KLSAgICAgICAgICAg
ICAgICBhbGxvY2F0aW9uLmtpbmQoKSA9PSBBbGxvY2F0aW9uOjpLaW5kOjpHZW5lcmF0b3JGdW5j
dGlvbiA/IE5ld0dlbmVyYXRvckZ1bmN0aW9uIDogTmV3RnVuY3Rpb247CisgICAgICAgICAgICBO
b2RlVHlwZSBub2RlVHlwZTsKKyAgICAgICAgICAgIHN3aXRjaCAoYWxsb2NhdGlvbi5raW5kKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb246CisgICAgICAg
ICAgICAgICAgbm9kZVR5cGUgPSBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb246Cisg
ICAgICAgICAgICAgICAgbm9kZVR5cGUgPSBOZXdHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6QXN5bmNG
dW5jdGlvbjoKKyAgICAgICAgICAgICAgICBub2RlVHlwZSA9IE5ld0FzeW5jRnVuY3Rpb247Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAogICAgICAgICAgICAgICAgIGFsbG9j
YXRpb24uaWRlbnRpZmllcigpLT5wcmVkaWN0aW9uKCksIG5vZGVUeXBlLApAQCAtMTc5MSw2ICsx
ODEyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9QaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0
aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yMDQ3LDcgKzIwNzIsOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAg
ICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAgVmVjdG9yPFByb21vdGVk
SGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVz
Y2FwZWUpOwogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5zaXplKCkgPT0gMik7CiAgICAg
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGUxMTQyOGM3OTA1M2E5NzRi
NjUxYjRhM2VkYmEyNWY5ZWE2OGU3NGQuLmVhZjNjZDI1OTUzNzA1NWRmOWQwNzcwZGQ4MDdlZjg3
OTNiZDJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC03MjksNyArNzI5LDggQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgog
ICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0
aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2Ug
TmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjRnVuY3Rp
b24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMDEsNiArMTAwMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1
bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNjliYmUxMWU1ZGFlNjdh
NzE1ODcyMjFlYTE1Njk4MWFjM2MzZjUyZC4uYWI0YzcwYzliMWM0MTEyMjIzZWE4N2Q4MDUwYWIy
NjQwNzI1ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTI5OSw2ICsyOTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRUb0Fy
Z3VtZW50czoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVu
Y3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgSnVtcDoKICAgICBj
YXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKQEAgLTM0Nyw2ICszNDgsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1
bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2Ug
UGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlv
bjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggNmNjZmZiNWRmN2ZjYmE3NzIzYTZjZDZkNjljNGY1ZTJkMDBlYjNkYy4uMzk0N2Q1OWM0MjQ4
ODcxZGU4OWEyMWY1Y2IzNmYzNzU3NDEyNWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRl
ICJKSVRNdWxHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSklUU3ViR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNv
cmQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC02MzYzLDcgKzYzNjQs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgbm9kZVR5cGUgPSBub2Rl
LT5vcCgpOwotICAgIEFTU0VSVChub2RlVHlwZSA9PSBOZXdGdW5jdGlvbiB8fCBub2RlVHlwZSA9
PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgQVNTRVJUKG5vZGVUeXBlID09IE5ld0Z1bmN0
aW9uIHx8IG5vZGVUeXBlID09IE5ld0dlbmVyYXRvckZ1bmN0aW9uIHx8IG5vZGVUeXBlID09IE5l
d0FzeW5jRnVuY3Rpb24pOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2NvcGVHUFIgPSBzY29wZS5ncHIoKTsK
QEAgLTYzNzgsNiArNjM3OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5j
dGlvbihOb2RlKiBub2RlKQogCiAgICAgICAgIGlmIChub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JG
dW5jdGlvbikKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpOworICAgICAgICBlbHNl
IGlmIChub2RlVHlwZSA9PSBOZXdBc3luY0Z1bmN0aW9uKQorICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVj
dXRhYmxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02Mzg3LDYgKzYzOTAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oTm9kZSogbm9kZSkKIAogICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0KICAgICAgICAgbm9kZVR5cGUgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24g
PyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKKyAgICAgICAgbm9kZVR5cGUgPT0gTmV3QXN5
bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSA6CiAgICAgICAg
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1
bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
QEAgLTY0MTEsNiArNjQxNSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVu
Y3Rpb24oTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1
dGFibGUpKTsKICAgICB9CiAKKyAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbikg
eworICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9uPihyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29wZUdQUiwgc2xv
d1BhdGgsIEpTQXN5bmNGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUoMCksIGV4ZWN1dGFibGUsIEpT
QXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsK
KworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRo
aXMsIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgfQorCiAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA0NThhMjky
OWY1OWE2NmQ0YmFkYjFhNGJhMmM1Zjc4Yjg3NTgzMTRjLi5lODk2NzcxZmE3ZTAxMmE5ZjkyM2Yz
NTNjMjBhMTM5MTZjNTkwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ5OTksNiArNDk5OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0FzeW5jRnVu
Y3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
CiAKQEAgLTU1ODUsNiArNTU4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3
RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2Fz
ZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggZDE4NWI5ZDYwMjdjMWVjYTEyZjExNTFmOTM0MjMxYWM3N2E5YTk2MS4uNmUzMjBm
N2Y2MjU4ZWU2ZDNlNjNjZGNkYTE5MzUzM2YxMDNhYWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MTY0LDYgKzUxNjQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNl
IE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBO
ZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24obm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogCkBAIC01ODAxLDYgKzU4MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2Ug
UGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBm
NDA3YjdmMWRlNzBlN2M1MGE3ODVlODU4MGNiOTg1MGI3OTU0MGZiLi5jMjc0NTBjZGExZjM3Zjcy
NDQ1MmZhOGZiODYxNDg2NjhhNjc5YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzEz
LDYgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3Vt
ZW50czoKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgog
ICAgICAgICAgICAgICAgIC8vIE5vZGVzIHRoYXQgYWxsb2NhdGUgZ2V0IHRvIHNldCB0aGVpciBl
cG9jaCBiZWNhdXNlIGZvciB0aG9zZSBub2RlcyB3ZSBrbm93CiAgICAgICAgICAgICAgICAgLy8g
dGhhdCB0aGV5IHdpbGwgYmUgdGhlIG5ld2VzdCBvYmplY3QgaW4gdGhlIGhlYXAuCiAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5zZXRFcG9jaChtX2N1cnJlbnRFcG9jaCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCmluZGV4IDUxY2Y0ODk2MGE4YjFmZjU3MmE4NjllYWUxOGJmMGE5ZjVhMjc5ZGQuLmQx
NGYwYmEyNmFhMmYwY2E0ZjMwMzYzN2Q1YTZlNmZlMTBiZDMyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCkBAIC0xNTMsNiArMTUzLDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2Ug
TmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0
dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CisgICAgICAgICAgICAgICAgICAg
IHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCmluZGV4IDkxOGQ4YWQ0NTlmNjQxMTgyNGFiNmFlYmZjNzYyY2FmMTNiOTQ3ZmYuLmNmN2Jl
M2JkZWIwZGVhNTljMjk4N2U4OTE0NGE3MjdlYTg3MmJhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC01MjksNiArNTI5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2Vu
ZXJhdG9yRnVuY3Rpb246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNh
c2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CkBAIC02NjgsNiArNjY5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAg
ICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3
QXN5bmNGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZWY1ZjNmMWFmMDFmZWI1ZjA5
Y2U1NGMxNDAwMGI1YTVhZjZjNDg5Zi4uNzYyMjA1MDQwNmE2MWQ1YTRhYjM2ZmI0NzczNmFkYmJj
MzEwYmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtMTE3LDYgKzExNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3lu
Y0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CkBAIC0yMjMsNiArMjI0LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQ
aGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVu
Y3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhp
bnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4Y2E0NGY4NTE2MmEyNTJkOWFh
MmU4YmVlMGQyNWU4Nzk1OWQ2YWU5Li42NGNjZmY4YWJiZTUyMjQzZWM3MjY3ZWU2YTljZjA1ZmU3
MzA2Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCkBAIC03MTAsNiArNzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3
RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVj
dEFyZ3VtZW50czoKQEAgLTEwNjksNiArMTA3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAg
ICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50
b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9u
OgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhh
bnRvbUNsb25lZEFyZ3VtZW50czoKQEAgLTM5NTYsOCArMzk1OCw5IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
bm9kZS0+b3AoKSA9PSBOZXdGdW5jdGlvbiB8fCBtX25vZGUtPm9wKCkgPT0gTmV3R2VuZXJhdG9y
RnVuY3Rpb24pOworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8
IG1fbm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbiB8fCBtX25vZGUtPm9wKCkgPT0g
TmV3QXN5bmNGdW5jdGlvbik7CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0b3JGdW5jdGlvbiA9IG1f
bm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAgYm9vbCBpc0FzeW5j
RnVuY3Rpb24gPSBtX25vZGUtPm9wKCkgPT0gTmV3QXN5bmNGdW5jdGlvbjsKICAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IApAQCAtMzk2NSw2ICszOTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGV4ZWN1dGFibGUt
PnNpbmdsZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgY2FsbFJlc3VsdCA9CiAgICAgICAgICAgICAgICAgaXNHZW5lcmF0b3JGdW5jdGlvbiA/IHZt
Q2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSkgOgorICAgICAg
ICAgICAgICAgIGlzQXN5bmNGdW5jdGlvbiA/IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpKSA6CiAgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQ
b2ludGVyKGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbFJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTcyLDYgKzM5NzYsNyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQogICAgICAgICAgICAgaXNHZW5l
cmF0b3JGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6CisgICAgICAgICAgICBpc0Fz
eW5jRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSA6CiAgICAgICAgICAg
ICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00MDA1LDYgKzQwMTAsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKGlzQXN5bmNGdW5jdGlvbikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25O
ZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25z
WzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9p
bnQsCiAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRp
b25zWzFdLmRpcmVjdEdQUigpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKaW5kZXggYmVlZWJjMDNlZTNlNTY0MDJjZTFlNzdlMzNhMjgwZjI1ZDBkODBlZi4u
Njk3ZjJkZGY1N2YyNjM4MWYwNWE5MDJkMTBlYTQ5OTQ0ZmIyYmQyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiRlRMSklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTExhenlTbG93UGF0aC5oIgogI2luY2x1
ZGUgIklubGluZUNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTgxLDYgKzgyLDcgQEAgZXh0ZXJu
ICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigKIAog
ICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRv
ckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoK
ICAgICAgICAgLy8gVGhvc2UgYXJlIGNvbXBsZXRlbHkgaGFuZGxlZCBieSBvcGVyYXRpb25NYXRl
cmlhbGl6ZU9iamVjdEluT1NSCkBAIC0xNTAsNyArMTUyLDggQEAgZXh0ZXJuICJDIiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICB9CiAK
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKLSAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0
b3JGdW5jdGlvbjogeworICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAg
IGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246IHsKICAgICAgICAgLy8gRmlndXJlIG91dCB3
aGF0IHRoZSBleGVjdXRhYmxlIGFuZCBhY3RpdmF0aW9uIGFyZQogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICBKU1Njb3BlKiBhY3RpdmF0
aW9uID0gbnVsbHB0cjsKQEAgLTE2NSw4ICsxNjgsMTAgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKIAogICAgICAgICBp
ZiAobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0Z1bmN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwotICAgICAgICBBU1NFUlQo
bWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uKTsK
LSAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOworICAg
ICAgICBlbHNlIGlmIChtYXRlcmlhbGl6YXRpb24tPnR5cGUoKSA9PSBQaGFudG9tTmV3R2VuZXJh
dG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3Jl
YXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwg
YWN0aXZhdGlvbik7ICAgIAorICAgICAgICBBU1NFUlQobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkg
PT0gUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gSlNBc3luY0Z1bmN0
aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVj
dXRhYmxlLCBhY3RpdmF0aW9uKTsKICAgICB9CiAKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNTQyYTQ3MTNmNTJkNWE5
ZmE5YzYzZTU2ZTAxNmUyMjMwNWE4YWRmNi4uNDliMWE4NmVkMTVhZjQxYWZhYTllN2QxM2I4OGE1
YzQ0Nzc4OWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjk5LDYgKzI5OSw4
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVu
YykKICAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApCisgICAgICAg
IERFRklORV9PUChvcF9uZXdfYXN5bmNfZnVuYykKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19h
c3luY19mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19vYmplY3QpCiAgICAgICAg
IERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAgICBERUZJTkVfT1Aob3Bfbm90KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggMDVkZTI4Y2UxZWQ2NzBiNTFmZWI4ZjUzYzM5YTRmZjU0
NDkyOGU0YS4uNmQyMDI0OTM4N2IyOTFhYmViZGZhOWZiYjc0N2RhODI3MDVmNmZlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC01NDQsNiArNTQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19hc3luY19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3Ry
dWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBi
OTAxYmI0NjMxMDYwMDEyMGUxMWY4NGUxZWNhOWNiNjI2NzQ5YjhkLi45Zjk5YWJhOWNmOTllY2Qy
OWEwMjlkODE0NDJiYThlMmZlZWY0MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKQEAgLTk3MSw5ICs5NzEsMTEgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29t
bW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51
Lm9wY29kZSk7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jKQogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYykKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2FzeW5jX2Z1bmMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fz
eW5jRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKICAgICB9CiB9CiAKQEAgLTk4Nyw2
ICs5ODksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudElu
c3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSnVtcCBub3RVbmRlZmluZWRT
Y29wZTsKQEAgLTEwMDgsOSArMTAxNSwxMSBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29t
bW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfbmV3X2Z1bmNfZXhwKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1
bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VS
VChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKKyAgICBlbHNlIGlmIChv
cGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7
CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVu
Y19leHApOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24s
IGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICB9CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBA
IC0xMDI2LDYgKzEwMzUsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXROZXdGdW5jRXhw
ckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
YXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBl
bWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA4ZjhkNGFkMzQ1M2ZkNDZi
MDMwNDMyYjMxOWMwNjNiMDMyOWMzOTU0Li5lYmQ3N2NkMDM4NjhiZGMxZmI4YWFiYWUwZmJmOTNk
MGU3NjFkYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCkBAIC0xMTcwLDYgKzExNzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2MKICAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JG
dW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkK
K3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9u
PihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdHJ1ZSk7Cit9CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5j
dGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGZ1bmNDZWxsLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkTmFtZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYWRmZWY3OGM2ZjAwYzUwM2QwNmZi
Zjg2NzY1Njg3ZTdkYzE0M2MyNC4uZGI1YmE4OTY1YTdhNTAxYmEzNTI3YWE2NTQ4ODVlNmNmM2Rk
OTUzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM3
NSw2ICszNzUsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKQogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0Nl
bGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5j
dGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNT
Y29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmlu
ZGV4IDg3NTgyNTFmYTRhMWQ0OWY5MTAwYmViZWMwODg2NWJkNDEyZDdkZjUuLmY1OGY0Zjk2NmVh
Nzc0M2JmYzRlYzgwN2MxMWVmM2FiNGRkNDI5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlz
dC5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgpAQCAtMTE0OSw2ICsxMTUwLDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwg
c2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19m
dW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIo
cGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhf
VFJBQ0lORworICAgIGRhdGFMb2dGKCJDcmVhdGluZyBhc3luYyBmdW5jdGlvbiFcbiIpOworI2Vu
ZGlmCisgICAgTExJTlRfUkVUVVJOKEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOworfQorCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lO
KCk7CkBAIC0xMTcxLDYgKzExODMsMTcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgTExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCku
UmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Y29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElO
VF9SRVRVUk4oSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7
Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkK
IHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAppbmRleCA5ODRlOWNjNDAzMDMyNzlhYTcwMmRmOGZlYjc4OGMzYjhiOTYw
NTBlLi5kNzYxMzhjMTI0NGZmN2FhZjQ4M2QwODAzYWQ1YmI4MTE3ZWE3OWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtMTAzLDYgKzEwMyw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19l
eHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25f
bmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDU2MGRmM2VjYWI4MmRhODJiMjdmNDQzNjI0ZDBmZGU4ZTUwMWNlOWUuLjY0NDVhNDdjZWRhOWE1
Y2Y3NTlhMTZlMTcyYzNiZDg0NmFiOWRiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEzMjEsNiArMTMyMSwxMiBA
QCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xs
aW50X29wX25ld19hc3luY19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYykKKyAgICBkaXNwYXRjaCg0KQor
CisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxP
cGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheSkKQEAgLTE1OTksNiArMTYw
NSwxMiBAQCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKICAgICBjYWxsT3Bjb2Rl
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgIGRp
c3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXN5bmNfZnVuY19leHA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hc3luY19mdW5j
X2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9zZXRfZnVuY3Rpb25fbmFtZToK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggODk3NGFkYmIxZGNmZDYzYjE4NzM1OTk5ZDYxNjdjOTcyZWU2NTQ1My4uOGIw
OTM1OTUxY2ZkYWYwYzM1MGI4ZDg4OTAzZmI3NThiNzI2OGYxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIFN0cmluZyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3Vy
Y2VQYXJzZU1vCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlICYmICFt
YXRjaChPUEVOQlJBQ0UpOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
IHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsK
LSAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpIHx8IGlzQXN5bmNGdW5jdGlvbkJvZHlQYXJz
ZU1vZGUocGFyc2VNb2RlKSkKKyAgICAgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
Qm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291
bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CkBAIC01Njgs
MTEgKzU2OCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bgogICAgIHsKICAgICAgICAgQXV0
b1BvcFNjb3BlUmVmIGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwog
ICAgICAgICBhc3luY0Z1bmN0aW9uQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoaW5uZXJQ
YXJzZU1vZGUpOwotICAgICAgICBTeW50YXhDaGVja2VyIGFzeW5jRnVuY3Rpb25Db250ZXh0KGNv
bnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7Ci0gICAgICAgIGlmIChpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJy
b3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoYXN5bmNGdW5jdGlv
bkNvbnRleHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9u
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxl
bWVudHMoYXN5bmNGdW5jdGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5
IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tl
cihjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgICAgICBpZiAoaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2Vy
UGFyc2VEYXRhKQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlv
blNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCksICJDYW5ub3QgcGFy
c2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHBy
ZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIpLCAiQ2Fubm90IHBhcnNlIHRo
ZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0YSkKKyAgICAgICAgICAgICAgICBmYWlsSWZG
YWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRo
ZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBtb2Rl
KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICB9
CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KICAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFy
dENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgaW5mby5mdW5jdGlvbkxl
bmd0aCwgaW5uZXJQYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKQEAg
LTIzNDEsNyArMjM0OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgIHJldHVy
biBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzeW50YXhDaGVja2VyLCBzdGFydExvY2F0aW9u
LCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGZ1
bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgZnVuY3Rpb25JbmZv
LmZ1bmN0aW9uTGVuZ3RoLCBtb2RlKTsKICAgICB9OwogCi0gICAgaWYgKG1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlIHx8IGlzQXN5bmNGdW5jdGlv
bldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBn
ZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgaW5uZXJQYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
OwogICAgICAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYWQ1ZDM2YWZiYWNmM2RlZGJh
ZTA2Y2E4NjIyODg3MGY2MzAzODUzOC4uYTU0OTMzZTc4ZTA5YmUxOTFkMjI3YThmZWZlZDI4NzZh
NzE1OTU0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKLSAgICAgICAgICAgIHNldElzQXN5
bmNBcnJvd0Z1bmN0aW9uQm9keSgpOworICAgICAgICAgICAgc2V0SXNBc3luY0Z1bmN0aW9uQm9k
eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlOgpAQCAtMTA5OCw3ICsxMDk4LDcgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKICAgICAgICAg
QVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpICYmIG1fc2NvcGVTdGFjay5zaXplKCkpOwot
ICAgICAgICB3aGlsZSAoaSAmJiAoIW1fc2NvcGVTdGFja1tpXS5pc0Z1bmN0aW9uQm91bmRhcnko
KSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNHZW5lcmF0b3JCb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFj
a1tpXS5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpKSkKKyAgICAgICAgd2hpbGUgKGkgJiYgKCFt
X3Njb3BlU3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlz
R2VuZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBc3luY0Z1bmN0aW9uQm91
bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkoKSkpCiAg
ICAgICAgICAgICBpLS07CiAgICAgICAgIC8vIFdoZW4gcmVhY2hpbmcgdGhlIHRvcCBsZXZlbCBz
Y29wZSAoaXQgY2FuIGJlIG5vbiBvcmRpbmFyeSBmdW5jdGlvbiBzY29wZSksIHdlIHJldHVybiBp
dC4KICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwpAQCAtMTIyOCw2
ICsxMjI4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICBBU1NF
UlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwogICAgICAgICB9CisgICAgICAgIGlmICgobV9z
Y29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ld
LmlzR2VuZXJhdG9yQm91bmRhcnkoKSkgJiYgaSkgeworICAgICAgICAgICAgaS0tOworICAgICAg
ICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbV9zY29wZVN0YWNrW2ldLmhhc0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50KTsKICAg
ICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5k
ZXggYTBkNzQwNDk0MTVlNGI4NDczNTYyZTM2ZTYyMjBkMzBjZTUxYmE2YS4uNmRhODgzN2EzNzk0
MTcyYjRjNTU2YjM3ZDIzZjk5NzZlZTZmMGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMTQ4LDYgKzE0OCwzMiBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNNZXRob2RQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7CiB9
CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFy
c2VNb2RlU2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLAor
ICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZSwKKyAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0
aW9uV3JhcHBlclBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJl
dHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1
bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMo
cGFyc2VNb2RlKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcnNl
TW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJz
ZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsCisg
ICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKTsKK30KKworCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkgCiB7IAogICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVT
ZXQoIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc2N2M1N2JmMmU2NWZkN2VkMGI5
NTJhZDFiZDJiMzliMGRhOWFlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlh
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3RvcikgfTsKKworQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90
eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiQXN5bmNGdW5jdGlvbiIpOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisg
ICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigx
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSkt
Pmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhl
YywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFy
Z3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKK30KKworQ2FsbFR5cGUgQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9CisKK0NvbnN0cnVj
dFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0
dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMzVhMmMxZTRmOTE1Y2FjMGI0YjE3NzNlNmQwNTg5ZTI3NDc0
N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblByb3RvdHlwZTsKKworY2xhc3MgQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgor
ICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUpCisgICAgeworICAgICAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0
cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKik7CisgICAgc3RhdGljIENvbnN0
cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIxZjBlMTA2ZWU2
NzEzNmU5MjcwMWQ2OGMzOWQ5NWIyZmM0ODY1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRw
QGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlv
blByb3RvdHlwZSkgfTsKKworQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNGdW5jdGlvblBy
b3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNDOjpKU05vbkZp
bmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5n
KCZ2bSwgIkFzeW5jRnVuY3Rpb24iKSwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgdm0ucHJv
dG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJv
dG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwMWU2YjhmZDU4OThhMjIxZTA2MmE3OGYzZWE2MGRlYTc5
YTgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAg
ICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OworCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkMmYzMzUyZDYwNjhi
MTE5ZmUwNDkzMTBjOTM4ODY3ZjI3OThiNTEyLi4wYTFhMzRjNjZjYTJkZTNhZWFjMGE4NGUxNWE1
MTAxMWE5Y2FiMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpA
QCAtOTMsMTggKzk0LDMzIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjaygKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9IG51
bGxwdHI7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgIHN3aXRjaCAo
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9ICJ7ZnVuY3Rpb24gIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcjoKKyAg
ICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9uICoiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmM6CisgICAgICAgIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBwcmVm
aXggPSAie2FzeW5jIGZ1bmN0aW9uICI7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIC8v
IEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdl
YiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNF
bXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRv
ciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CisgICAg
ICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAi
KCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHBy
b2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
ID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0
aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgs
IGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIp
OwotICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
ZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVj
KS5nZXQoKSk7CkBAIC0xMjYsMTIgKzE0MiwyMCBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNs
YXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
ZXhlYywgbmV3VGFyZ2V0LCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9u
U3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIFN0
cnVjdHVyZSogc3ViY2xhc3NTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBuZXdUYXJnZXQsIHN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQorICAgIHN3aXRj
aCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVy
ZSk7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcjoKICAgICAg
ICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwotICAgIHJldHVybiBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3Bl
KCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6QXN5bmM6CisgICAgICAgIHJldHVybiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVu
Y3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAz
MWMzM2Q2YWY0ZmYxMmJjMjRjMWUyYjViZjRlNTU1OGQ3NjU2OTA2Li5kZWVlOWE1NWQ2ZjJjNjFl
OWY3MTQ0ODNiMzFhYmQ1N2ZiMWNhZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZh
dGU6CiBlbnVtIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSB7CiAgICAgRnVuY3Rpb24s
CiAgICAgR2VuZXJhdG9yLAorICAgIEFzeW5jLAogfTsKIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6VGV4dFBvc2l0aW9uJiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwgSlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCmluZGV4IDMzOWU0MWI4Y2U2MTI0ZjlkMzIxYjg0MDkzY2E5ZTBkMmFmZDZmODMuLjYx
ZTdlZWMyYTU4ZDEzMWRhZjcxOTE4ZGI4ZjliNmM5ZTIwNmQyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
ICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTA1LDYgKzEwNiwxNSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBjbGFz
c1NvdXJjZS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKTsKICAgICAgICAgfQogCisgICAgICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNBc3luY0Z1bmN0aW9uOjppbmZvKCkpKSB7CisgICAg
ICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rp
b24oKSA/ICJhc3luYyAiIDogImFzeW5jIGZ1bmN0aW9uICI7CisKKyAgICAgICAgICAgIFN0cmlu
Z1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uo
CisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCisg
ICAgICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVj
dXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0
aW9uLT5uYW1lKHZtKSwgc291cmNlKSk7CisgICAgICAgIH0KKwogICAgICAgICBTdHJpbmcgZnVu
Y3Rpb25IZWFkZXIgPSBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0
aW9uICI7CiAgICAgICAgIAogICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGV4ZWN1dGFibGUt
PnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJhNzQzNzIzYmRj
N2ZhZWVmZjYyNTFlMmZmMmEyZGRjNjQyOGU3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlh
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FzeW5j
RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gSlNBc3luY0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0
aW9uIiwgICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBc3lu
Y0Z1bmN0aW9uKSB9OworCitKU0FzeW5jRnVuY3Rpb246OkpTQXN5bmNGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVy
ZSkKK3sKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZUltcGwo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0FzeW5jRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChhc3luY0Z1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAg
IGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gYXN5bmNGdW5j
dGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7Cisg
ICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVy
ZSgpKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2
bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICBy
ZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiog
YXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1
cmUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZt
LCBhc3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOworICAgIHJl
dHVybiBhc3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0
dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdkYTg3ZGI2
ZDM4NWE3OWQ1NTc2YzFiNzJhMTM0Y2EzZTIxYmYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxp
YS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQXN5bmNGdW5jdGlvbiA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBWTTsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGNvbnN0IHN0YXRp
YyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0
ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNBc3lu
Y0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2Nv
cGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNh
cGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlu
bGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0FzeW5jRnVuY3Rpb24pOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTQXN5
bmNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUq
KTsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCAzODQwODJkYmQzOTdlOTBiOGEwNDZjNjM1ZGQ1ZTczODJiNzMwNTJmLi5jYjNi
MzAwMGZhYTRjODM5MzYwZDc5MjIzMTAzNWEwM2E0NDg1ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMyw2ICszMyw4IEBA
CiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCkBAIC02Myw2ICs2NSw3IEBACiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC01
ODUsNiArNTg4LDggQEAgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBpbnN0YW5jZVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICAgICBtX3Rocm93VHlwZUVy
cm9yRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAg
IEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAg
bV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgKEZ1bmN0aW9uQ29uc3RydWN0b3Iq
KWZ1bmN0aW9uQ29uc3RydWN0b3IpOworCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25z
dHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsK
ICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsK
ICAgICAKQEAgLTYzMCw3ICs2MzUsMTcgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKIAogICAg
IG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICAKKworICAgIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAg
ICAgIFtdKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAg
ICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUo
YXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShK
U0FzeW5jRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5p
dC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoUHJvcGVydHlO
YW1lKG51bGxwdHIpLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmds
b2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5nZXQoKSksIGFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUpKTsKKworICAgICAgICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGluaXQudm0sIGluaXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQXN5bmNGdW5j
dGlvblJlc3VtZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQuZ2xvYmFsKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICB9KTsKKwogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9h
cnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0xMTAy
LDYgKzExMTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVF
cnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNl
dHRlcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yKTsK
IAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwpAQCAt
MTExMCw2ICsxMTI2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKKyAgICB0aGlzT2JqZWN0LT5tX2Fz
eW5jRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyUHJvdG90eXBlKTsKIAogICAgIHRoaXNPYmplY3Qt
Pm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDQwODQ2Y2UyOTdiNDdj
Mjg1ZWM0MDkxY2Q3MzQwMjk1YzA2ZGE1ZjAuLjJkZDQ0MTY5ZDFmMWNjMDhiYWM2MTdlYjc1YjI0
MGYwMzY1NjMyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXJy
YXlDb25zdHJ1Y3RvcjsKIGNsYXNzIEFycmF5UHJvdG90eXBlOworY2xhc3MgQXN5bmNGdW5jdGlv
blByb3RvdHlwZTsKIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGU7CiBjbGFzcyBDb25zb2xlQ2xpZW50
OwogY2xhc3MgRGVidWdnZXI7CkBAIC02Myw2ICs2NCw3IEBAIGNsYXNzIEVycm9yQ29uc3RydWN0
b3I7CiBjbGFzcyBFcnJvclByb3RvdHlwZTsKIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBF
dmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3I7CiBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKIGNsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKIGNsYXNzIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOwpAQCAtMjMzLDYgKzIzNSw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fc3ludGF4RXJy
b3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4g
bV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICBXcml0
ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7
CkBAIC0zMDYsNiArMzA5LDcgQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rp
b25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7
CisgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKQEAgLTUy
Nyw2ICs1MzEsMTkgQEAgcHVibGljOgogICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBn
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRv
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9
CiAKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgfQor
ICAgIGNvbnN0IExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsK
KyAgICB9CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlw
ZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBlKHRoaXMpKTsgfQorICAg
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGVDb25jdXJyZW50
bHkoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUqPihsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLnByb3RvdHlwZUNvbmN1cnJlbnRseSgp
KTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0
dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlQ29uY3VycmVudGx5KCkgY29uc3QgeyByZXR1cm4g
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXRDb25jdXJyZW50bHkoKTsgfQorCiAgICAg
U3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlclNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3Bl
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CiAgICAgU3RydWN0dXJlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWU0NzM0
ZDVhNzZkOThhYTM0NGM3Zjg5NDIxNTExNGVmY2M5NTQzMS4uNjliZGZlY2M4OTBmNDNmNmI1N2Y4
MDM4NmFlN2I4N2ZlYTdlOGZkNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMTYtMTAtMjYgIENhaXRsaW4g
UG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgbmV3X2Fz
eW5jX2Z1bmMgLyBuZXdfYXN5bmNfZnVuY19leHAgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwMzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCB0ZXN0cyBiYXNl
ZCBvbiB0ZXN0cyBmcm9tIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTQyMTYu
CisKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hc3luYy1h
d2FpdC1iYXNpYy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93
QXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChsZXQu
QXN5bmNGdW5jdGlvbi5hc3luYyk6CisgICAgICAgIChhc3luYy5hc3luY0Z1bmN0aW9uRm9yUHJv
dG8pOgorICAgICAgICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jKToKKyAgICAgICAgKE9i
amVjdC5nZXRQcm90b3R5cGVPZi5hc3luYy5tZXRob2QpOgorICAgICAgICAoYXN5bmMpOgorICAg
ICAgICAoYXN5bmMubWV0aG9kKToKKyAgICAgICAgKGFzeW5jLmFzeW5jTm9uQ29uc3RydWN0b3JE
ZWNsKToKKyAgICAgICAgKHNob3VsZFRocm93Lm5ldy5hc3luYyk6CisgICAgICAgIChzaG91bGRU
aHJvdy5uZXcuYXN5bmMubm9uQ29uc3RydWN0b3IpOgorICAgICAgICAoYXN5bmMuYXN5bmNEZWNs
KToKKyAgICAgICAgKGFzeW5jLmYpOgorICAgICAgICAoTXlFcnJvcik6CisgICAgICAgIChhc3lu
Yy5hc3luY0RlY2xUaHJvd2VyKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOgor
ICAgICAgICAocmVzb2x2ZUxhdGVyKToKKyAgICAgICAgKHJlamVjdExhdGVyKToKKyAgICAgICAg
KGFzeW5jLnJlc3VtZUFmdGVyTm9ybWFsKToKKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJO
b3JtYWwpOgorICAgICAgICAocmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdy5hc3luYyk6CisgICAgICAg
IChhc3luYy5yZXN1bWVBZnRlclRocm93KToKKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJU
aHJvdyk6CisgICAgICAgIChyZXN1bWVBZnRlclRocm93QXJyb3cuYXN5bmMpOgorICAgICAgICAo
Y2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29y
ZC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChTeW50YXhFcnJv
ci5DYW5zdHJpbmdfYXBwZWFyZWRfaGVyZWF3YWl0LmNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3Ry
aW5nLnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5y
YXcuYXdhaXQpOgorICAgICAgICAoY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmFz
eW5jLmF3YWl0KToKKyAgICAgICAgKFN5bnRheEVycm9yLkNhbm5vdC5kZWNsYXJlLm5hbWVkKToK
KyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoYXNzZXJ0KToKKyAg
ICAgICAgKHNob3VsZFRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAobW96U2VtYW50aWNzLmFz
eW5jLmVtcHR5KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVSZXR1cm4pOgor
ICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0KToKKyAgICAgICAgKG1velNl
bWFudGljcy5hc3luYy5zaW1wbGVBd2FpdEFzeW5jKToKKyAgICAgICAgKG1velNlbWFudGljcy5h
c3luYy5yZXR1cm5PdGhlckFzeW5jKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1w
bGVUaHJvd2VyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWxlZ2F0ZWRUaHJvd2Vy
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy50cnlDYXRjaCk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMudHJ5Q2F0Y2hUaHJvdyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMud2VsbEZpbmFsbHkpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmZpbmFsbHlNYXlG
YWlsKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbWJlZGRlZC5hc3luYy5pbm5lcik6
CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1iZWRkZWQpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmZpYik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuaXNPZGQuYXN5
bmMuaXNFdmVuKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5pc09kZCk6CisgICAgICAg
IChtb3pTZW1hbnRpY3MuaGFyZGNvcmVGaWIuYXN5bmMuZmliMik6CisgICAgICAgIChtb3pTZW1h
bnRpY3MubmFtZWRBc3luY0V4cHIuYXN5bmMuc2ltcGxlKToKKyAgICAgICAgKG1velNlbWFudGlj
cy5hc3luYy5leGVjdXRpb25PcmRlci5hc3luYy5maXJzdCk6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMuc2Vjb25kKToKKyAgICAgICAgKG1velNlbWFu
dGljcy5hc3luYy5leGVjdXRpb25PcmRlci5hc3luYy50aGlyZCk6CisgICAgICAgIChtb3pTZW1h
bnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5j
Lm1pc2NlbGxhbmVvdXMpOgorICAgICAgICAobW96U2VtYW50aWNzLnRocm93ZXIpOgorICAgICAg
ICAobW96U2VtYW50aWNzLmFzeW5jLmRlZmF1bHRBcmdzKToKKyAgICAgICAgKG1velNlbWFudGlj
cy5zaG91bGRUaHJvdyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MpOgorICAgICAgICAobW96TWV0
aG9kcy5YKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0VmFsdWUp
OgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5zZXRWYWx1ZSk6CisgICAgICAgICht
b3pNZXRob2RzLlgucHJvdG90eXBlLmFzeW5jLmluY3JlbWVudCk6CisgICAgICAgIChtb3pNZXRo
b2RzLlgucHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFzc05hbWUpOgorICAgICAgICAobW96TWV0
aG9kcy5YLmFzeW5jLmdldFN0YXRpY1ZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWS5wcm90
b3R5cGUuYXN5bmMuZ2V0QmFzZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlkpOgor
ICAgICAgICAobW96RnVuY3Rpb25OYW1lSW5mZXJyZW5jZS5hc3luYy50ZXN0KToKKyAgICAgICAg
KG1velN5bnRheEVycm9ycyk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVk
LXdvcmQuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHNob3VsZFRocm93
U3ludGF4RXJyb3IpOgorICAgICAgICAoQXN5bmNGdW5jdGlvbi5hc3luYyk6CisgICAgICAgICog
c3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5kaW5nLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgor
ICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChub0FyZ3VtZW50c0Fycm93Mi5h
c3luYyk6CisgICAgICAgICogc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX25l
dy50YXJnZXRfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAo
QzEpOgorICAgICAgICAoQzIpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6Cisg
ICAgICAgICogc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1cGVyX2JpbmRp
bmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3lu
Yyk6CisgICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmJhc2VDbGFzc1ZhbHVlKToKKyAgICAg
ICAgKEJhc2VDbGFzcy5wcm90b3R5cGUuZ2V0IHByb3BlcnR5KToKKyAgICAgICAgKEJhc2VDbGFz
cyk6CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcCk6CisgICAg
ICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcDIpOgorICAgICAgICAoQ2hp
bGRDbGFzcyk6CisgICAgICAgIChDaGlsZENsYXNzMik6CisgICAgICAgICogc3RyZXNzL2FzeW5j
X2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3RoaXNfYmluZGluZy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKGQueSk6CisK
IDIwMTYtMTAtMjUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFN0
cmluZy5wcm90b3R5cGUucmVwbGFjZSgpIHNob3VsZCB0aHJvdyBhbiBPdXRPZk1lbW9yeUVycm9y
IHdoZW4gdXNpbmcgdG9vIG11Y2ggbWVtb3J5LgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9hc3luY0Z1
bmN0aW9uVGVzdHMueWFtbCBiL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDhlNDc0MjNiNjcwNWQxYTlmZjAwYmZhMmJhMjlhNGQwMzdlYjE2YQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwKQEAgLTAsMCArMSw0MDgg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29t
Pi4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUHJvdmlkZWQg
dG8gc2ltcGxpZnkgcnVubmluZyBhc3luYyBmdW5jdGlvbiB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBv
bmNlIGFzeW5jCisjIGZ1bmN0aW9ucyBhcmUgbm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxh
Zy4KKworLS0tCistIHBhdGg6IHN0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1z
dXBlci1iaW5kaW5nLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMt
YXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMKKyAgY21kOiBydW5E
ZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlz
LWJpbmRpbmcuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hcnJv
dy1mdW5jdGlvbnMtbGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMKKyAgY21kOiBydW5EZWZh
dWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5qcworICBjbWQ6IHJ1bkRlZmF1
bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKKyAgY21kOiBydW5EZWZh
dWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hd2FpdC1zeW50YXguanMKKyAgY21kOiBydW5EZWZh
dWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwor
ICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdv
cmQuanMKKyAgY21kOiBydW5EZWZhdWx0CisKKyMgRlRMSklUCistIHBhdGg6IHN0cmVzcy9hc3lu
Yy1mdW5jdGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRo
OiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1uby1kb3VibGUtYWxs
b2NhdGUuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlv
bi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBh
dGg6IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLXB1dC5qcworICBj
bWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24t
c2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6
IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctb3NyZXhpdC5qcworICBj
bWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24t
c2lua2luZy1wdXQuanMKKyAgY21kOiBydW5EZWZhdWx0CisKKyMgVGVzdDI2MgorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1jb25zdHJ1
Y3QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24t
Y29uc3RydWN0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24v
QXN5bmNGdW5jdGlvbi1pcy1leHRlbnNpYmxlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5
bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWlzLWV4dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWlzLXN1YmNsYXNzLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWlzLXN1
YmNsYXNzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6
c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5
bmNGdW5jdGlvbi1sZW5ndGguanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1sZW5n
dGguanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24tbmFtZS5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMv
QXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLW5hbWUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0
aW9uL0FzeW5jRnVuY3Rpb24tcHJvdG90eXBlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwg
W10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVu
Y3Rpb24tcHJvdG90eXBlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9u
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlv
blByb3RvdHlwZS1pcy1leHRlbnNpYmxlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNG
dW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLWlzLWV4dGVuc2libGUuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LXByb3RvdHlwZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNG
dW5jdGlvblByb3RvdHlwZS1wcm90b3R5cGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1p
bnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLXRvLXN0cmluZy5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMv
QXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLXRvLXN0cmluZy5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3By
b3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQt
aW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtY29uc3RydWN0LmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWls
dC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1jb25zdHJ1Y3QuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1oYXMtbmFtZS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3By
b3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5
bmNGdW5jdGlvbi9pbnN0YW5jZS1oYXMtbmFtZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0s
IFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24v
aW5zdGFuY2UtbGVuZ3RoLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwgW10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLWxlbmd0aC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJu
ZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtcHJvdG90eXBlLXByb3BlcnR5LmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1wcm90b3R5cGUtcHJv
cGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pcy1u
b3QtYS1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2lzLW5v
dC1hLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKworIyBGSVhNRTogQ3JlYXRlRHluYW1pY0Z1bmN0aW9uKCkgaXMgYnJva2Vu
IGluIEpTQywgbmVlZCB0byBwYXJzZSBmb3JtYWwgcGFyYW1ldGVycyBhbmQgYm9keSBzZXBhcmF0
ZWx5LgorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90
b1N0cmluZy9Bc3luY0Z1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5z
L0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9Bc3luY0Z1bmN0aW9uLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKwor
IyBGSVhNRTogVGhlc2UgdGVzdHMgcmVxdWlyZSBGLnAudG9TdHJpbmcgcmV2aXNpb25zIChodHRw
czovL3RjMzkuZ2l0aHViLmlvL0Z1bmN0aW9uLXByb3RvdHlwZS10b1N0cmluZy1yZXZpc2lvbi8p
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3Ry
aW5nL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFp
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9hc3luYy1mdW5jdGlvbi1kZWNs
YXJhdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rp
b24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24uanMKKyAgY21k
OiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2Fz
eW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9hc3luYy1tZXRob2QuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5n
L2FzeW5jLW1ldGhvZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCisKKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Fycm93LXJldHVybnMtcHJvbWlzZS5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vYXJy
b3ctcmV0dXJucy1wcm9taXNlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNl
cHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0s
IFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctTlNQTC13aXRoLVVT
RC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ct
ZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LU5TUEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9l
YXJseS1lcnJvcnMtYXJyb3ctYXJndW1lbnRzLWluLWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVu
Y3Rpb24vZWFybHktZXJyb3JzLWFycm93LWF3YWl0LWluLWZvcm1hbHMtZGVmYXVsdC5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWFycm93LWF3YWl0LWluLWZvcm1hbHMtZGVmYXVsdC5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9u
L2Vhcmx5LWVycm9ycy1hcnJvdy1hd2FpdC1pbi1mb3JtYWxzLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMt
YXJyb3ctYXdhaXQtaW4tZm9ybWFscy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1i
b2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJT
eW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1ib2R5LWNv
bnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhF
cnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYm9keS1j
b250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWJvZHktY29u
dGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZHVw
bGljYXRlLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhF
cnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZXZhbC1p
bi1mb3JtYWwtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3Jt
YWxzLWJvZHktZHVwbGljYXRlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZm9ybWFscy1ib2R5
LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Np
b25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWNvbnRh
aW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJv
ciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWNvbnRhaW5z
LXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZm9ybWFscy1jb250
YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZvcm1hbHMtY29u
dGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1OU1BM
LXdpdGgtVVNELmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3lu
Yy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1OU1BMLXdpdGgtVVNELmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYmluZGluZy1pZGVudGlmaWVyLWFyZ3VtZW50cy5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmlj
dF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0
aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWJpbmRpbmctaWRlbnRpZmllci1ldmFsLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rp
b24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYm9keS1jb250YWlucy1zdXBlci1jYWxsLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFy
bHktZXJyb3JzLWV4cHJlc3Npb24tZXZhbC1pbi1mb3JtYWwtcGFyYW1ldGVycy5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vh
cmx5LWVycm9ycy1leHByZXNzaW9uLWZvcm1hbHMtYm9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9y
cy1leHByZXNzaW9uLWZvcm1hbHMtYm9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMt
ZXhwcmVzc2lvbi1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHBy
ZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1l
eHByZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1l
eHByZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZXhwcmVzc2lvbi1ub3Qtc2ltcGxlLWFzc2lnbm1lbnQtdGFyZ2V0LmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiUmVmZXJlbmNlRXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZXhwcmVzc2lvbi1ub3Qtc2ltcGxlLWFzc2lnbm1lbnQtdGFyZ2V0LmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiUmVmZXJlbmNlRXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24v
ZXhwcmVzc2lvbi1yZXR1cm5zLXByb21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2V4cHJlc3Npb24tcmV0dXJucy1wcm9taXNlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVu
Y3Rpb24vc3ludGF4LWV4cHJlc3Npb24taXMtUHJpbWFyeUV4cHJlc3Npb24uanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1leHBy
ZXNzaW9uLWlzLVByaW1hcnlFeHByZXNzaW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtQmluZGluZ0lkZW50aWZpZXItaW4tZ2xv
YmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2Fp
dC1CaW5kaW5nSWRlbnRpZmllci1pbi1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1CaW5kaW5nSWRlbnRpZmllci1uZXN0
ZWQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
W10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0
LUJpbmRpbmdJZGVudGlmaWVyLW5lc3RlZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
IlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xh
bmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10aGVuYWJsZS1ub3QtY2FsbGFi
bGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10
aGVuYWJsZS1ub3QtY2FsbGFibGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10aGVuYWJsZXMtdGhhdC10aHJvdy5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlcy10aGF0
LXRocm93LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6
YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9h
d2FpdC1hd2FpdHMtdGhlbmFibGVzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpz
Il0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
d2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGVzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFu
ZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1mdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tZnVuY3Rpb24uanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1n
ZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0
L2F3YWl0LWluLWdlbmVyYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tZ2xvYmFsLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tbmVzdGVk
LWZ1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2Fp
dC9hd2FpdC1pbi1uZXN0ZWQtZnVuY3Rpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1uZXN0ZWQtZ2VuZXJhdG9yLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1uZXN0
ZWQtZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXdhaXQvYXdhaXQtdGhyb3dzLXJlamVjdGlvbnMuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LXRocm93cy1yZWplY3Rpb25zLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0
XQorCisjRklYTUU6IEpTQyBhbHdheXMgdGhyb3dzIHRoZXNlIFJlZmVyZW5jZUVycm9ycyBhdCBy
dW50aW1lIHJhdGhlciB0aGFuIGF0IHBhcnNlIHRpbWUuCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9lYXJseS1lcnJvcnMtYXdhaXQtbm90LXNpbXBsZS1h
c3NpZ25tZW50LXRhcmdldC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJSZWZlcmVuY2VF
cnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Np
b25zL2F3YWl0L2Vhcmx5LWVycm9ycy1hd2FpdC1ub3Qtc2ltcGxlLWFzc2lnbm1lbnQtdGFyZ2V0
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlJlZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKworLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdh
aXQvbm8tb3BlcmFuZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9y
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXdhaXQvbm8tb3BlcmFuZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL2F3YWl0L3N5bnRheC1hd2FpdC1oYXMtVW5hcnlFeHByZXNzaW9uLXdpdGgtTXVs
dGlwbGljYXRpdmVFeHByZXNzaW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpz
Il0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
d2FpdC9zeW50YXgtYXdhaXQtaGFzLVVuYXJ5RXhwcmVzc2lvbi13aXRoLU11bHRpcGxpY2F0aXZl
RXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmlj
dCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdh
aXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25l
cHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2F3YWl0L3N5bnRheC1hd2FpdC1oYXMtVW5hcnlFeHByZXNzaW9uLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCisKKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVm
aW5pdGlvbi9hc3luYy1zdXBlci1jYWxsLWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9k
b25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9hc3luYy1zdXBlci1jYWxs
LWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpz
dHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9hc3luYy1zdXBlci1jYWxsLXBhcmFtLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4u
Ly4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRp
b24vYXN5bmMtc3VwZXItY2FsbC1wYXJhbS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVw
cmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2RlY2xhcmF0aW9uLXJldHVybnMt
cHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1m
dW5jdGlvbi9kZWNsYXJhdGlvbi1yZXR1cm5zLXByb21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1k
ZWNsYXJhdGlvbi1OU1BMLXdpdGgtVVNELmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1OU1BMLXdp
dGgtVVNELmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9h
c3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYXJndW1lbnRzLWluLWZvcm1h
bC1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVt
ZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYXdhaXQtaW4tZm9y
bWFscy1kZWZhdWx0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hd2FpdC1pbi1mb3JtYWxzLWRl
ZmF1bHQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hd2FpdC1pbi1mb3JtYWxzLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vh
cmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hd2FpdC1pbi1mb3JtYWxzLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJv
cnMtZGVjbGFyYXRpb24tYmluZGluZy1pZGVudGlmaWVyLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHkt
ZXJyb3JzLWRlY2xhcmF0aW9uLWJpbmRpbmctaWRlbnRpZmllci1ldmFsLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZGVjbGFyYXRpb24tYm9keS1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1k
ZWNsYXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1k
ZWNsYXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNs
YXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMt
ZGVjbGFyYXRpb24tZHVwbGljYXRlLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNs
YXJhdGlvbi1ldmFsLWluLWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVj
bGFyYXRpb24tZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24t
Zm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWZv
cm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
IlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
c3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFs
cy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9y
bWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9y
bWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLW5vLWFzeW5j
LWdlbmVyYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3lu
Yy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtbm8tYXN5bmMtZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0
aW9uLWJvZHktdGhhdC1yZXR1cm5zLWFmdGVyLWF3YWl0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXBy
aW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXJldHVybnMtYWZ0
ZXItYXdhaXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3Qs
IDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMt
ZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtcmV0dXJucy5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2Rv
bmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC1yZXR1cm5z
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9u
L2V2YWx1YXRpb24tYm9keS10aGF0LXRocm93cy1hZnRlci1hd2FpdC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC10aHJv
d3MtYWZ0ZXItYXdhaXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpz
dHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMv
YXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtdGhyb3dzLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXRo
cm93cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFz
eW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5j
dGlvbi9ldmFsdWF0aW9uLWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRl
bWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWRl
ZmF1bHQtdGhhdC10aHJvd3MuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwg
Wzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMt
ZnVuY3Rpb24vZXZhbHVhdGlvbi1kZWZhdWx0LXRoYXQtdGhyb3dzLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
ZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tbWFwcGVk
LWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5j
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlv
bi9ldmFsdWF0aW9uLXRoaXMtdmFsdWUtZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50
SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0
ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tdGhpcy12YWx1ZS1wYXNzZWQuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi10aGlz
LXZhbHVlLXBhc3NlZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0
cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9h
c3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXVubWFwcGVkLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXVubWFwcGVkLWFy
Z3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwg
OmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1m
dW5jdGlvbi9zeW50YXgtZGVjbGFyYXRpb24tbGluZS10ZXJtaW5hdG9ycy1hbGxvd2VkLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRh
eC1kZWNsYXJhdGlvbi1saW5lLXRlcm1pbmF0b3JzLWFsbG93ZWQuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1kZWNs
YXJhdGlvbi1uby1saW5lLXRlcm1pbmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9uLW5vLWxpbmUtdGVy
bWluYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMv
YXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXBy
aW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1kZWNsYXJhdGlvbi5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NsYXNzL2RlZmluaXRpb24vbWV0aG9kcy1h
c3luYy1zdXBlci1jYWxsLWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRI
YW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRl
bWVudHMvY2xhc3MvZGVmaW5pdGlvbi9tZXRob2RzLWFzeW5jLXN1cGVyLWNhbGwtYm9keS5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFz
eW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9kZWZp
bml0aW9uL21ldGhvZHMtYXN5bmMtc3VwZXItY2FsbC1wYXJhbS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9kZWZpbml0aW9uL21ldGhvZHMtYXN5bmMtc3Vw
ZXItY2FsbC1wYXJhbS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5q
cyJdLCBbOnN0cmljdCwgOmFzeW5jXQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
YXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNWUwMmEzODY5YTcxYTYyNDAzZTNmN2ExOGM0NDI1OWQ4MGZjZjNhCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGlj
YWwtYXJndW1lbnRzLWJpbmRpbmcuanMKQEAgLTAsMCArMSw1MyBAQAorLy8gVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBh
dCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsK
KyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyAr
ICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlv
biBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7Cisg
ICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkg
eyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0Fz
eW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIg
aGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVh
bCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3Ig
PSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAg
ICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBy
dW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhy
b3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJv
clR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1l
c3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVz
c2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK3Zh
ciBub0FyZ3VtZW50c0Fycm93ID0gYXN5bmMgKCkgPT4gYXdhaXQgWy4uLmFyZ3VtZW50c107Citz
aG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3coMSwgMiwgMyksIFJlZmVyZW5j
ZUVycm9yKTsKK3ZhciBub0FyZ3VtZW50c0Fycm93MiA9IGFzeW5jICgpID0+IHsgcmV0dXJuIGF3
YWl0IFsuLi5hcmd1bWVudHNdOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRz
QXJyb3cyKDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJvcik7CisKK3Nob3VsZEJlQXN5bmMoIlsxLDIs
M10iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4gSlNPTi5zdHJpbmdp
ZnkoWy4uLmFyZ3VtZW50c10pKSgpOyB9KSgxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5jKCJbNCw1
LDZdIiwgKCkgPT4gKGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IHsgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KFsuLi5hd2FpdCBhcmd1bWVudHNdKSB9KSgpOyB9KSg0LCA1LCA2KSk7CisK
KyhmdW5jdGlvbiB0ZXN0QXJndW1lbnRzQmluZGluZygpIHsKKyAgICB2YXIgYXJnc0JpbmRpbmc7
CisgICAgdmFyIHByb21pc2UgPSAoZnVuY3Rpb24oKSB7IGFyZ3NCaW5kaW5nID0gYXJndW1lbnRz
OyByZXR1cm4gKGFzeW5jKCkgPT4gYXJndW1lbnRzKSgpIH0pKDEsIDIsIDMpOworICAgIHNob3Vs
ZEJlQXN5bmMoYXJnc0JpbmRpbmcsICgpID0+IHByb21pc2UpOworfSkoKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQt
YmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2Fs
LW5ldy50YXJnZXQtYmluZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjZhMzk4M2Y3YTkyNzQwZWU0Nzhj
M2ZmN2JiODMwYzc4NWFlNDA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzCkBAIC0wLDAg
KzEsNTUgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJ
T05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0
aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZv
aWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAi
ICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBt
c2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1
bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAg
ICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9
KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAg
dGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgewor
ICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhl
bihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAg
IGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUu
bmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5j
ZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1
biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBh
Y3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3Nh
Z2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1
biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFs
Lm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBDMSgpIHsKKyAgICByZXR1cm4gYXN5bmMg
KCkgPT4gYXdhaXQgbmV3LnRhcmdldDsKK30KKworZnVuY3Rpb24gQzIoKSB7CisgICAgcmV0dXJu
IGFzeW5jICgpID0+IHsgcmV0dXJuIGF3YWl0IG5ldy50YXJnZXQgfTsKK30KKworc2hvdWxkQmVB
c3luYyhDMSwgbmV3IEMxKCkpOworc2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIEMxKCkpOworc2hv
dWxkQmVBc3luYyhDMiwgbmV3IEMyKCkpOworc2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIEMyKCkp
OworCitzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQsIFJlZmVy
ZW5jZUVycm9yKTsKK3Nob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQg
bmV3LnRhcmdldDsgfSwgUmVmZXJlbmNlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDhiZjBmOWFjZTNjNzVmN2Q4ZjdlYmNiMjAzZjczOGRiMzljOWZkYgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhp
Y2FsLXN1cGVyLWJpbmRpbmcuanMKQEAgLTAsMCArMSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVp
cmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBi
dWlsZCB0aW1lLgorLy9AIHNraXAKKworCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0
dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOwor
ICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsg
IjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAg
ICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7
IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFk
RXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7
CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3Vs
ZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2NsYXNzIEJhc2VDbGFzcyB7CisgICAg
YmFzZUNsYXNzVmFsdWUoKSB7CisgICAgICAgIHJldHVybiAiQmFzZUNsYXNzVmFsdWUiOworICAg
IH0KKyAgICBnZXQgcHJvcGVydHkoKSB7CisgICAgICAgIHJldHVybiAidGVzdCEiOworICAgIH0K
K30KKworY2xhc3MgQ2hpbGRDbGFzcyBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgYXN5bmNTdXBl
clByb3AoKSB7CisgICAgICAgIHJldHVybiBhc3luYyB4ID0+IHN1cGVyLmJhc2VDbGFzc1ZhbHVl
KCk7CisgICAgfQorICAgIGFzeW5jU3VwZXJQcm9wMigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5j
IHggPT4geyByZXR1cm4gc3VwZXIuYmFzZUNsYXNzVmFsdWUoKTsgfQorICAgIH0KK30KKworLy8g
RklYTUU6IHN1cGVyIGJpbmRpbmdzIGluIGFzeW5jIGFycm93IGZ1bmN0aW9ucyBhcmUgYnJva2Vu
CitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNT
dXBlclByb3AoKSk7CitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENs
YXNzKCkuYXN5bmNTdXBlclByb3AyKCkpOworCitjbGFzcyBDaGlsZENsYXNzMiBleHRlbmRzIEJh
c2VDbGFzcyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBhc3luYyAoc2Vs
ZiA9IHN1cGVyKCkpID0+IHNlbGYuYmFzZUNsYXNzVmFsdWUoKSArICcgJyArIHN1cGVyLnByb3Bl
cnR5OworICAgIH0KK30KKworc2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUgdGVzdCEiLCBu
ZXcgQ2hpbGRDbGFzczIoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJv
dy1mdW5jdGlvbnMtbGV4aWNhbC10aGlzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3lu
Yy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlzLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJh
ZmExMTNmYTkxMjZjM2UxNjdmYWU0MTFjM2EwNGU4N2ExMWI1YQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGlu
Zy5qcwpAQCAtMCwwICsxLDMwIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAx
N19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Ag
c2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBp
ZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAg
bXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIu
IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhw
ZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJy
b3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyk7Cit9CisKK3ZhciBkID0gKHsgeCA6ICJiYXIiLCB5IDogZnVuY3Rpb24oKSB7IHJl
dHVybiBhc3luYyB6ID0+IHRoaXMueCArIHo7IH19KS55KCk7Cit2YXIgZSA9IHsgeCA6ICJiYXoi
LCB5IDogZCB9OworCitzaG91bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBkKCJsZXkiKSk7Citz
aG91bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBlLnkoImxleSIpKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
YXdhaXQtYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmMjA2NTM2NTNlY2FjZDdmM2VkYjYzYmIzMmQx
MWI3NGE5MmQzZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0
LWJhc2ljLmpzCkBAIC0wLDAgKzEsMjk5IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxF
X0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUu
CisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAi
IikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVl
IiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBh
Y3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlv
bih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVy
cm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWlj
cm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisK
KyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91
bGRUaHJvdyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAg
dmFyIGhhZEVycm9yID0gZmFsc2U7CisKKyAgICB0cnkgeworICAgICAgICBhY3R1YWwgPSBydW4o
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAg
YWN0dWFsID0gZTsKKyAgICB9CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5u
YW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNl
b2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4g
KyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFj
dHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2Fn
ZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwu
bWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJv
clR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZh
bHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0s
CisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVh
bCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJy
b3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0
aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBp
ZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsg
IiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9p
ZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1
dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2UpIHsKKyAgICB0cnkgeworICAgICAgICBldmFs
KHN0cik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0
byB0aHJvdyBhIFN5bnRheEVycm9yLCBidXQgZGlkIG5vdCB0aHJvdy4iKQorICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaWYgKGUuY29uc3RydWN0b3IgIT09IFN5bnRheEVycm9yKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEg
U3ludGF4RXJyb3IsIGJ1dCB0aHJldyAnIiArIGUgKyAiJyIpOworICAgICAgICBpZiAobWVzc2Fn
ZSAhPT0gdm9pZCAwICYmIGUubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBTeW50YXhFcnJvcjog
JyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGUgKyAiJyIpOworICAgIH0KK30KKwor
Ly8gRG8gbm90IGluc3RhbGwgYEFzeW5jRnVuY3Rpb25gIGNvbnN0cnVjdG9yIG9uIGdsb2JhbCBv
YmplY3QKK3Nob3VsZEJlKHVuZGVmaW5lZCwgdGhpcy5Bc3luY0Z1bmN0aW9uKTsKK2xldCBBc3lu
Y0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkge30pLmNvbnN0cnVjdG9yOworCisvLyBMZXQg
ZnVuY3Rpb25Qcm90b3R5cGUgYmUgdGhlIGludHJpbnNpYyBvYmplY3QgJUFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUlLgorYXN5bmMgZnVuY3Rpb24gYXN5bmNGdW5jdGlvbkZvclByb3RvKCkge30KK3No
b3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5
bmNGdW5jdGlvbkZvclByb3RvKSk7CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwg
T2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jIGZ1bmN0aW9uKCkge30pKTsKK3Nob3VsZEJlKEFz
eW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgKCkgPT4g
e30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90
eXBlT2YoeyBhc3luYyBtZXRob2QoKSB7fSB9Lm1ldGhvZCkpOworCisvLyBGSVhNRTogQXN5bmNG
dW5jdGlvbiBjb25zdHJ1Y3RvciBzaG91bGQgYnVpbGQgZnVuY3Rpb25zIHdpdGggY29ycmVjdCBw
cm90b3R5cGUuCisvLyBzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKEFzeW5jRnVuY3Rpb24oKSkpOworCisvLyBBc3luY0Z1bmN0aW9uQ3JlYXRl
IGRvZXMgbm90IHByb2R1Y2UgYW4gb2JqZWN0IHdpdGggYSBQcm90b3R5cGUKK3Nob3VsZEJlKHVu
ZGVmaW5lZCwgYXN5bmNGdW5jdGlvbkZvclByb3RvLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxz
ZSwgYXN5bmNGdW5jdGlvbkZvclByb3RvLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7Citz
aG91bGRCZSh1bmRlZmluZWQsIChhc3luYyBmdW5jdGlvbigpIHt9KS5wcm90b3R5cGUpOworc2hv
dWxkQmUoZmFsc2UsIChhc3luYyBmdW5jdGlvbigpIHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90
eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoYXN5bmMoKSA9PiB7fSkucHJvdG90eXBlKTsK
K3Nob3VsZEJlKGZhbHNlLCAoYXN5bmMoKSA9PiB7fSkuaGFzT3duUHJvcGVydHkoInByb3RvdHlw
ZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9k
LnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgKHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0
aG9kLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIEFz
eW5jRnVuY3Rpb24oKS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIEFzeW5jRnVuY3Rpb24o
KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworCisvLyBBc3luY0Z1bmN0aW9uLnByb3Rv
dHlwZVsgQEB0b1N0cmluZ1RhZyBdCit2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1Rh
Zyk7CitzaG91bGRCZSgiQXN5bmNGdW5jdGlvbiIsIGRlc2NyaXB0b3IudmFsdWUpOworc2hvdWxk
QmUoZmFsc2UsIGRlc2NyaXB0b3IuZW51bWVyYWJsZSk7CitzaG91bGRCZShmYWxzZSwgZGVzY3Jp
cHRvci53cml0YWJsZSk7CitzaG91bGRCZSh0cnVlLCBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7
CisKK3Nob3VsZEJlKDEsIEFzeW5jRnVuY3Rpb24ubGVuZ3RoKTsKKworLy8gTGV0IEYgYmUgISBG
dW5jdGlvbkFsbG9jYXRlKGZ1bmN0aW9uUHJvdG90eXBlLCBTdHJpY3QsICJub24tY29uc3RydWN0
b3IiKQorYXN5bmMgZnVuY3Rpb24gYXN5bmNOb25Db25zdHJ1Y3RvckRlY2woKSB7fQorc2hvdWxk
VGhyb3coKCkgPT4gbmV3IGFzeW5jTm9uQ29uc3RydWN0b3JEZWNsKCksIFR5cGVFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBuZXcgKGFzeW5jIGZ1bmN0aW9uKCkge30pLCBUeXBlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gbmV3ICh7IGFzeW5jIG5vbkNvbnN0cnVjdG9yKCkge30gfSkubm9u
Q29uc3RydWN0b3IoKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoKCkgPT4g
Im5vdCBhIGNvbnN0cnVjdG9yISIpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3
IChBc3luY0Z1bmN0aW9uKCkpLCBUeXBlRXJyb3IpOworCisvLyBOb3JtYWwgY29tcGxldGlvbgor
YXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsKCkgeyByZXR1cm4gInRlc3QiOyB9CitzaG91bGRCZUFz
eW5jKCJ0ZXN0IiwgYXN5bmNEZWNsKTsKK3Nob3VsZEJlQXN5bmMoInRlc3QyIiwgYXN5bmMgZnVu
Y3Rpb24oKSB7IHJldHVybiAidGVzdDIiOyB9KTsKK3Nob3VsZEJlQXN5bmMoInRlc3QzIiwgYXN5
bmMgKCkgPT4gInRlc3QzIik7CitzaG91bGRCZUFzeW5jKCJ0ZXN0NCIsICgpID0+ICh7IGFzeW5j
IGYoKSB7IHJldHVybiAidGVzdDQiOyB9IH0pLmYoKSk7CisKK2NsYXNzIE15RXJyb3IgZXh0ZW5k
cyBFcnJvciB7fTsKKworLy8gVGhyb3cgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNE
ZWNsVGhyb3dlcihlKSB7IHRocm93IG5ldyBNeUVycm9yKGUpOyB9CitzaG91bGRUaHJvd0FzeW5j
KCgpID0+IGFzeW5jRGVjbFRocm93ZXIoImJvb20hIiksIE15RXJyb3IsICJib29tISIpOworc2hv
dWxkVGhyb3dBc3luYygoKSA9PiAoYXN5bmMgZnVuY3Rpb24oZSkgeyB0aHJvdyBuZXcgTXlFcnJv
cihlKTsgfSkoImJvb20hISEiKSwgTXlFcnJvciwgImJvb20hISEiKTsKK3Nob3VsZFRocm93QXN5
bmMoKCkgPT4gKGFzeW5jIGUgPT4geyB0aHJvdyBuZXcgTXlFcnJvcihlKSB9KSgiYm9vbSEhIiks
IE15RXJyb3IsICJib29tISEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKHsgYXN5bmMgdGhy
b3dlcihlKSB7IHRocm93IG5ldyBNeUVycm9yKGUpOyB9IH0pLnRocm93ZXIoImJvb20hISEhIiks
IE15RXJyb3IsICJib29tISEhISIpOworCitmdW5jdGlvbiByZXNvbHZlTGF0ZXIodmFsdWUpIHsg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7IH0KK2Z1bmN0aW9uIHJlamVjdExhdGVyKGVy
cm9yKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7IH0KKworLy8gUmVzdW1lIGFmdGVy
IE5vcm1hbCBjb21wbGV0aW9uCit2YXIgbG9nID0gW107Cithc3luYyBmdW5jdGlvbiByZXN1bWVB
ZnRlck5vcm1hbCh2YWx1ZSkgeworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAg
IHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJl
c3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsg
MSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZSAr
IDE7Cit9CisKK3Nob3VsZEJlQXN5bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWwoMSkpOwor
c2hvdWxkQmUoInN0YXJ0OjEgcmVzdW1lOjIgcmVzdW1lOjMiLCBsb2cuam9pbigiICIpKTsKKwor
dmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0ZXJOb3JtYWwodmFsdWUpIHsKKyAgICAgICAg
bG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2
ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsK
KyAgICAgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAg
bG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWUgKyAxOwor
ICAgIH0KK307Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4gTy5yZXN1bWVBZnRl
ck5vcm1hbCgyKSk7CitzaG91bGRCZSgic3RhcnQ6MiByZXN1bWU6MyByZXN1bWU6NCIsIGxvZy5q
b2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdyA9IGFzeW5jICh2YWx1ZSkg
PT4geworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQg
cmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUp
OworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1
c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9OworbG9nID0g
W107CitzaG91bGRCZUFzeW5jKDYsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsQXJyb3coMykpOwor
c2hvdWxkQmUoInN0YXJ0OjMgcmVzdW1lOjQgcmVzdW1lOjUiLCBsb2cuam9pbigiICIpKTsKKwor
dmFyIHJlc3VtZUFmdGVyTm9ybWFsRXZhbCA9IEFzeW5jRnVuY3Rpb24oInZhbHVlIiwgYAorICAg
IGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxh
dGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZh
bHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3Vt
ZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7CitgKTsKK2xvZyA9IFtdOworc2hv
dWxkQmVBc3luYyg3LCAoKSA9PiByZXN1bWVBZnRlck5vcm1hbEV2YWwoNCkpOworc2hvdWxkQmUo
InN0YXJ0OjQgcmVzdW1lOjUgcmVzdW1lOjYiLCBsb2cuam9pbigiICIpKTsKKworLy8gUmVzdW1l
IGFmdGVyIFRocm93IGNvbXBsZXRpb24KK2FzeW5jIGZ1bmN0aW9uIHJlc3VtZUFmdGVyVGhyb3co
dmFsdWUpIHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAg
ICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgewor
ICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1
cm4gdmFsdWUgKyAxOworfQorCitsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoMiwgKCkgPT4gcmVz
dW1lQWZ0ZXJUaHJvdygxKSk7CitzaG91bGRCZSgic3RhcnQ6MSByZXN1bWU6dGhyb3cxIHJlc3Vt
ZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1l
QWZ0ZXJUaHJvdyh2YWx1ZSkgeworICAgICAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRo
cm93MSIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBsb2cucHVzaCgicmVz
dW1lOiIgKyBlKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFsdWUg
PSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB2YWx1ZSArIDE7CisgICAgfQorfQorbG9nID0gW107CitzaG91bGRCZUFzeW5jKDMsICgp
ID0+IE8ucmVzdW1lQWZ0ZXJUaHJvdygyKSk7CitzaG91bGRCZSgic3RhcnQ6MiByZXN1bWU6dGhy
b3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhy
b3dBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4geworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFs
dWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93
MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7
CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRo
cm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsg
ZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRC
ZUFzeW5jKDQsICgpID0+IHJlc3VtZUFmdGVyVGhyb3dBcnJvdygzKSk7CitzaG91bGRCZSgic3Rh
cnQ6MyByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwordmFy
IHJlc3VtZUFmdGVyVGhyb3dFdmFsID0gQXN5bmNGdW5jdGlvbigidmFsdWUiLCBgCisgICAgbG9n
LnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2Fp
dCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cu
cHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBh
d2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBs
b2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2Ap
OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDUsICgpID0+IHJlc3VtZUFmdGVyVGhyb3dFdmFs
KDQpKTsKK3Nob3VsZEJlKCJzdGFydDo0IHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxv
Zy5qb2luKCIgIikpOworCisvLyBNZXRob29kRGVmaW5pdGlvbiBTeW50YXhFcnJvcnMKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5l
eHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxp
c3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gPSB0
cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZv
ciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsg
YXN5bmMgZm9vICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBh
cmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIG9iaiA9IHsgYXN5bmMgZm9vIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVk
IGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBl
Y3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwICwgYmFyIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
MCB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBh
cmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBh
c3luYyAnZm9vJyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEg
cGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
PScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyAsIGJhciB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlz
dC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nIH0i
LCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3Vt
ZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5j
IFsnZm9vJ10gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBh
cmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
PScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBs
aXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28n
XSB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBh
cmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgZm9vIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMg
bWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFz
cyBDIHsgYXN5bmMgZm9vICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3Rl
ZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gfSIsICJVbmV4
cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMg
bWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNs
YXNzIEMgeyBhc3luYyAwIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0
ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3Qu
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCA9IHRydWUgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBh
IGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiY2xhc3MgQyB7IGFzeW5jIDAgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4
cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBs
aXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgfSIsICJV
bmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5
bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImNsYXNzIEMgeyBhc3luYyAnZm9vJyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicu
IEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRl
ciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28n
ID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAn
KCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgLCBiYXIgfTsiLCAiVW5leHBlY3Rl
ZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhv
ZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7
IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5p
bmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAi
VW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFz
eW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
Y2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0n
LiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0
ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2Zv
byddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5n
ICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0
b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdz
IHBhcmFtZXRlciBsaXN0LiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1t
b2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGIyNGZlNzYwYjBhM2FiMmQ5ZmY1
YjE1YzM0N2ZjZjcxYzJmODE5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMKQEAgLTAsMCArMSw3MiBAQAorLy8gVGhp
cyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUg
ZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworZnVuY3Rpb24gY2hlY2tNb2R1bGVTeW50YXhFcnJvcihzb3VyY2UsIGVycm9yTWVzc2FnZSkg
eworICAgIHNob3VsZFRocm93KCgpID0+IGNoZWNrTW9kdWxlU3ludGF4KHNvdXJjZSksIGVycm9y
TWVzc2FnZSk7Cit9CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBh
d2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKGAKK2V4cG9ydCB2
YXIgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFi
bGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcu
cmF3YAorbGV0IGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGxldCBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjog
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUu
OjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2NvbnN0IGF3YWl0ID0g
MQorYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcu
cmF3YAorZXhwb3J0IGNvbnN0IGF3YWl0ID0gMQorYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworCitj
aGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitmdW5jdGlvbiBhd2FpdCgpIHt9Citg
LCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4g
YSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0
aW9uKiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9u
IG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AKK2FzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjog
Q2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOwor
CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2F3YWl0fSBmcm9t
ICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0
ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdg
CitpbXBvcnQge2ZvbyBhcyBhd2FpdH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0ICogYXMgYXdhaXQgZnJvbSAnZm9v
JzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJp
bmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1w
b3J0IGF3YWl0LCB7eCwgeSwgen0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90
IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1
bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwgeix9IGZyb20g
J2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRl
ZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
K2ltcG9ydCBhd2FpdCBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdh
d2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRh
eEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsICogYXMgZm9vIGZyb20gJ2Zvbyc7Citg
LCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5n
IG5hbWUuOjJgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemls
bGEuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBjNWQ2YjkyZDNlNjFlNDk4MzllMDZjZDFkNGUxYjU4MDNlNzhhMGIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzCkBAIC0wLDAgKzEsMzA1
IEBACisvKiBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2Yg
dGhlIE1vemlsbGEgUHVibGljCisgKiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUg
TVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgKiBmaWxlLCBZb3UgY2FuIG9idGFp
biBvbmUgYXQgaHR0cDovL21vei5vcmcvTVBMLzIuMC8uICovCisKKy8vIFRoaXMgdGVzdCByZXF1
aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQg
YnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1z
ZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7
CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50
aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAg
ZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7Cisg
ICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBh
Y3R1YWw7CisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFs
OworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGFjdHVhbCA9
IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAg
ICAgICBhY3R1YWwgPSBlOworICAgIH0KKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlw
ZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3Rh
bmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBy
dW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiAr
IGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVz
c2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1
YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBl
cnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7
IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFj
dHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKyAgICBpZiAoIWhhZEVy
cm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8g
dGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAg
aWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSAr
ICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZv
aWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBi
dXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICghY29uZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNz
YWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZh
bChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50
YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYg
KHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS5t
ZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3
ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFk
RXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJvciIpOworfQorCisvLyBzZW1hbnRpY3Mu
anMKKyhmdW5jdGlvbiBtb3pTZW1hbnRpY3MoKSB7CisKK2FzeW5jIGZ1bmN0aW9uIGVtcHR5KCkg
eworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVSZXR1cm4oKSB7CisgICAgcmV0dXJuIDE7Cit9
CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0KCkgeworICAgIHZhciByZXN1bHQgPSBhd2Fp
dCAyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0
QXN5bmMoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0IHNpbXBsZVJldHVybigpOworICAgIHJl
dHVybiAyICsgcmVzdWx0OworfQorCithc3luYyBmdW5jdGlvbiByZXR1cm5PdGhlckFzeW5jKCkg
eworICAgIHJldHVybiAxICsgYXdhaXQgc2ltcGxlQXdhaXRBc3luYygpOworfQorCithc3luYyBm
dW5jdGlvbiBzaW1wbGVUaHJvd2VyKCkgeworICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCith
c3luYyBmdW5jdGlvbiBkZWxlZ2F0ZWRUaHJvd2VyKCkgeworICAgIHZhciB2YWwgPSBhd2FpdCBz
aW1wbGVUaHJvd2VyKCk7CisgICAgcmV0dXJuIHZhbDsKK30KKworYXN5bmMgZnVuY3Rpb24gdHJ5
Q2F0Y2goKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOwor
ICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICByZXR1
cm4gNTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoVGhyb3coKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4g
J0ZBSUxFRCc7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gZGVsZWdhdGVkVGhy
b3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gd2VsbEZpbmFsbHkoKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8p
IHsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0gZmluYWxseSB7CisgICAgICAgIHJl
dHVybiA2OworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gZmluYWxseU1heUZhaWwoKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2gg
KF8pIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgcmV0dXJu
IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGVtYmVkZGVk
KCkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGlubmVyKCkgeworICAgICAgICByZXR1cm4gNzsKKyAg
ICB9CisgICAgcmV0dXJuIGF3YWl0IGlubmVyKCk7Cit9CisKKy8vIHJlY3Vyc2lvbiwgaXQgd29y
a3MhCithc3luYyBmdW5jdGlvbiBmaWIobikgeworICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0g
MSkgPyBuIDogYXdhaXQgZmliKG4gLSAxKSArIGF3YWl0IGZpYihuIC0gMik7Cit9CisKKy8vIG11
dHVhbCByZWN1cnNpb24KK2FzeW5jIGZ1bmN0aW9uIGlzT2RkKG4pIHsKKyAgICBhc3luYyBmdW5j
dGlvbiBpc0V2ZW4obikgeworICAgICAgICByZXR1cm4gbiA9PT0gMCB8fCBhd2FpdCBpc09kZChu
IC0gMSk7CisgICAgfQorICAgIHJldHVybiBuICE9PSAwICYmIGF3YWl0IGlzRXZlbihuIC0gMSk7
Cit9CisKKy8vIHJlY3Vyc2lvbiwgdGFrZSB0aHJlZSEKK3ZhciBoYXJkY29yZUZpYiA9IGFzeW5j
IGZ1bmN0aW9uIGZpYjIobikgeworICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDog
YXdhaXQgZmliMihuIC0gMSkgKyBhd2FpdCBmaWIyKG4gLSAyKTsKK30KKwordmFyIGFzeW5jRXhw
ciA9IGFzeW5jIGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAxMDsKK30KKwordmFyIG5hbWVkQXN5
bmNFeHByID0gYXN5bmMgZnVuY3Rpb24gc2ltcGxlKCkgeworICAgIHJldHVybiAxMTsKK30KKwor
YXN5bmMgZnVuY3Rpb24gZXhlY3V0aW9uT3JkZXIoKSB7CisgICAgdmFyIHZhbHVlID0gMDsKKyAg
ICBhc3luYyBmdW5jdGlvbiBmaXJzdCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVl
ID09PSAwID8gMSA6IHZhbHVlKTsKKyAgICB9CisgICAgYXN5bmMgZnVuY3Rpb24gc2Vjb25kKCkg
eworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgPT09IDAgPyAyIDogdmFsdWUpOworICAg
IH0KKyAgICBhc3luYyBmdW5jdGlvbiB0aGlyZCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9
IHZhbHVlID09PSAwID8gMyA6IHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0IGZpcnN0
KCkgKyBhd2FpdCBzZWNvbmQoKSArIGF3YWl0IHRoaXJkKCkgKyA2OworfQorCithc3luYyBmdW5j
dGlvbiBtaXNjZWxsYW5lb3VzKCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYm
CisgICAgICAgIGFyZ3VtZW50cy5jYWxsZWUubmFtZSA9PT0gIm1pc2NlbGxhbmVvdXMiKQorICAg
ICAgICByZXR1cm4gMTQ7Cit9CisKK2Z1bmN0aW9uIHRocm93ZXIoKSB7CisgICAgdGhyb3cgMTU7
Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRlZmF1bHRBcmdzKGFyZyA9IHRocm93ZXIoKSkgeworfQor
CisvLyBBc3luYyBmdW5jdGlvbnMgYXJlIG5vdCBjb25zdHJ1Y3RpYmxlCitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgYXN5bmMgZnVuY3Rpb24gUGVyc29uKCkgeworICAgIH0KKyAgICBuZXcgUGVy
c29uKCk7Cit9LCBUeXBlRXJyb3IpOworCitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgZW1wdHkp
Oworc2hvdWxkQmVBc3luYygxLCBzaW1wbGVSZXR1cm4pOworc2hvdWxkQmVBc3luYygyLCBzaW1w
bGVBd2FpdCk7CitzaG91bGRCZUFzeW5jKDMsIHNpbXBsZUF3YWl0QXN5bmMpOworc2hvdWxkQmVB
c3luYyg0LCByZXR1cm5PdGhlckFzeW5jKTsKK3Nob3VsZFRocm93QXN5bmMoc2ltcGxlVGhyb3dl
ciwgRXJyb3IpOworc2hvdWxkQmVBc3luYyg1LCB0cnlDYXRjaCk7CitzaG91bGRCZUFzeW5jKDYs
IHdlbGxGaW5hbGx5KTsKK3Nob3VsZFRocm93QXN5bmMoZmluYWxseU1heUZhaWwsIEVycm9yKTsK
K3Nob3VsZEJlQXN5bmMoNywgZW1iZWRkZWQpOworc2hvdWxkQmVBc3luYyg4LCAoKSA9PiBmaWIo
NikpOworc2hvdWxkQmVBc3luYyg5LCBleGVjdXRpb25PcmRlcik7CitzaG91bGRCZUFzeW5jKDEw
LCBhc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMSwgbmFtZWRBc3luY0V4cHIpOworc2hvdWxk
QmVBc3luYygxMiwgKCkgPT4gaXNPZGQoMTIpLnRoZW4odiA9PiB2ID8gIm9vcHMiIDogMTIpKTsK
K3Nob3VsZEJlQXN5bmMoMTMsICgpID0+IGhhcmRjb3JlRmliKDcpKTsKK3Nob3VsZEJlQXN5bmMo
MTQsICgpID0+IG1pc2NlbGxhbmVvdXMoMSwgMiwgMykpOworc2hvdWxkQmVBc3luYygxNSwgKCkg
PT4gZGVmYXVsdEFyZ3MoKS5jYXRjaChlID0+IGUpKTsKKworfSkoKTsKKworLy8gbWV0aG9kcy5q
cworKGZ1bmN0aW9uIG1vek1ldGhvZHMoKSB7CisKK2NsYXNzIFggeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICB0aGlzLnZhbHVlID0gNDI7CisgICAgfQorICAgIGFzeW5jIGdldFZhbHVl
KCkgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKKyAgICB9CisgICAgc2V0VmFsdWUodmFs
dWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIH0KKyAgICBhc3luYyBpbmNy
ZW1lbnQoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWUoKTsKKyAg
ICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSArIDEpOworICAgICAgICByZXR1cm4gdGhpcy5nZXRW
YWx1ZSgpOworICAgIH0KKyAgICBhc3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAgICAgICBy
ZXR1cm4gJ1gnOworICAgIH0KKyAgICBzdGF0aWMgYXN5bmMgZ2V0U3RhdGljVmFsdWUoKSB7Cisg
ICAgICAgIHJldHVybiA0NDsKKyAgICB9Cit9CisKK2NsYXNzIFkgZXh0ZW5kcyBYIHsKKyAgICBh
c3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QmFzZUNs
YXNzTmFtZSgpOworICAgIH0KK30KKwordmFyIG9iakxpdGVyYWwgPSB7CisgICAgYXN5bmMgZ2V0
KCkgeworICAgICAgICByZXR1cm4gNDU7CisgICAgfSwKKyAgICBzb21lU3R1ZmY6IDUKK307CisK
K3ZhciB4ID0gbmV3IFgoKTsKK3ZhciB5ID0gbmV3IFkoKTsKKworc2hvdWxkQmVBc3luYyg0Miwg
KCkgPT4geC5nZXRWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMoNDMsICgpID0+IHguaW5jcmVtZW50
KCkpOworc2hvdWxkQmVBc3luYyg0NCwgKCkgPT4gWC5nZXRTdGF0aWNWYWx1ZSgpKTsKK3Nob3Vs
ZEJlQXN5bmMoNDUsICgpID0+IG9iakxpdGVyYWwuZ2V0KCkpOworc2hvdWxkQmVBc3luYygnWCcs
ICgpID0+IHkuZ2V0QmFzZUNsYXNzTmFtZSgpKTsKKworfSkoKTsKKworKGZ1bmN0aW9uIG1vekZ1
bmN0aW9uTmFtZUluZmVycmVuY2UoKSB7CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7IH0KKwor
dmFyIGFub24gPSBhc3luYyBmdW5jdGlvbigpIHsgfQorCitzaG91bGRCZSgidGVzdCIsIHRlc3Qu
bmFtZSk7CitzaG91bGRCZSgiYW5vbiIsIGFub24ubmFtZSk7CisKK30pKCk7CisKKyhmdW5jdGlv
biBtb3pTeW50YXhFcnJvcnMoKSB7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIid1c2Ugc3Ry
aWN0JzsgYXN5bmMgZnVuY3Rpb24gZXZhbCgpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9uIGFyZ3VtZW50cygpIHt9Iik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKGsgPSBzdXBlci5wcm9wKSB7IH0iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoKSB7IHN1cGVyLnByb3Ao
KTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3Vw
ZXIoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0g
YXdhaXQgMykge30iKTsKKworfSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGUx
ZDMzMjFjN2Y4MDA4N2JlZGYwZjE1NzIxYjI5NWI4MWVlZmIzCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDE2
NiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9T
WU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24g
YXNzZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAgaWYgKCFjb25kKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IobXNnKTsKK30KK25vSW5saW5lKGFzc2VydCk7CisKK2Z1bmN0aW9uIHNob3VsZFRo
cm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJyb3Ig
PSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAg
ICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIg
KyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJv
ciIpOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik7CisKK3ZhciBBc3luY0Z1
bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkge30pLmNvbnN0cnVjdG9yOworCisvLyBBc3luY0Z1
bmN0aW9uRXhwcmVzc2lvbgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyB2YXIgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7
YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBm
dW5jdGlvbigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0
fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IGxldCBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgWy4u
LmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
Iihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7aXNBc3lu
YzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsg
Y29uc3QgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
KGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbLi4u
YXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
KGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNB
c3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0pIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5h
bWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSkiLCAi
Q2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbihhd2FpdCkge30p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZihbYXdh
aXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlv
biBmKFsuLi5hd2FpdF0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uIGYoLi4uYXdhaXQpIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZih7aXNBc3luYzogYXdhaXR9KSB7fSkiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uCitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFy
IFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgdmFyIHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24g
ZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IGF3YWl0OyB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFth
d2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQge2F3YWl0
fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNB
c3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFthd2Fp
dF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHthd2Fp
dH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJD
YW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgYXN5bmMg
ZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdh
d2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBmKGF3YWl0KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbLi4uYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZiguLi5hd2FpdCkge30iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0fSkge30iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6
IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNBcnJvd0Z1bmN0aW9uCitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgW2F3YWl0
XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lz
QXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCBhd2Fp
dDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5
bmMgKCkgPT4geyBsZXQgW2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCBbLi4uYXdhaXRdID0gW107
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgbGV0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9
IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgYXdh
aXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IFsuLi5hd2FpdF0g
PSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKCkgPT4geyBjb25zdCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2lzQXN5bmM6
IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4g
eyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQg
J2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKCkgPT4geyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fu
bm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKGF3YWl0KSA9PiB7fSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoW2F3YWl0XSkg
PT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKFsu
Li5hd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9
IGFzeW5jICguLi5hd2FpdCkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKHthd2FpdH0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
cGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7aXNBc3luYzogYXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyBhd2FpdCA9PiB7fSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
OworCisvLyBBc3luY01ldGhvZAorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoKSB7IHZhciBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBbLi4uYXdhaXRd
ID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgdmFyIHthd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7
IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFth
d2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQg
e2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
KSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBhd2FpdDsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBb
XTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7
IGFzeW5jIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBu
YW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSB9
IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihhd2Fp
dCkge30gfSAiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3lu
YyBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZihbLi4uYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoLi4uYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7YXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoe2lzQXN5bmM6IGF3YWl0fSkge30i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbiBjb25zdHJ1Y3Rvcgorc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIFsuLi5hd2FpdF0gPSBb
XTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIg
e2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ3ZhciB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgYXdhaXQ7
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9u
KCdsZXQgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbignbGV0IFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7YXdhaXR9ID0g
e307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rp
b24oJ2NvbnN0IGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiQXN5bmNGdW5jdGlvbignY29uc3QgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgWy4uLmF3YWl0XSA9
IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbignY29uc3Qge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
Y29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNh
bm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdhc3luYyBmdW5jdGlv
biBhd2FpdCgpIHt9JykiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ2F3YWl0JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCdbYXdhaXRdJywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1l
dGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJBc3luY0Z1bmN0aW9uKCdbLi4uYXdhaXRdJywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCcuLi5hd2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigne2F3YWl0fScsICcnKSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigne2lzQXN5bmM6IGF3YWl0fScs
ICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24t
Y3JlYXRlLW9wdGltaXplZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWNyZWF0
ZS1vcHRpbWl6ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZmNGUwNGJkZWI0ZTdkN2FkNTVlMWRiYzRhZDdm
NzgyODgxYTNhZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0
aW9uLWNyZWF0ZS1vcHRpbWl6ZWQuanMKQEAgLTAsMCArMSw0NyBAQAorLy8gVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBh
dCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlID0gYXN5bmMgZnVuY3Rpb24oKSB7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIHRlc3RB
c3luY0Z1bmN0aW9uRXhwcmVzc2lvbigpCit7CisgICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGF3YWl0IDQyOworICAgICAgICByZXR1cm4gMTsKKyAgICB9OworfQor
bm9JbmxpbmUodGVzdEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKTsKKworZnVuY3Rpb24gdGVzdEFz
eW5jRnVuY3Rpb25EZWNsYXJhdGlvbigpCit7CisgICAgYXN5bmMgZnVuY3Rpb24gYXN5bmNGbigp
CisgICAgeworICAgICAgICBhd2FpdCA0MjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisg
ICAgcmV0dXJuIGFzeW5jRm47Cit9Citub0lubGluZSh0ZXN0QXN5bmNGdW5jdGlvbkRlY2xhcmF0
aW9uKTsKKworZnVuY3Rpb24gdGVzdEFzeW5jQXJyb3dGdW5jdGlvbigpCit7CisgICAgcmV0dXJu
IGFzeW5jKCkgPT4KKyAgICB7CisgICAgICAgIGF3YWl0IDQyOworICAgICAgICByZXR1cm4gMTsK
KyAgICB9OworfQorbm9JbmxpbmUodGVzdEFzeW5jQXJyb3dGdW5jdGlvbik7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZSh0ZXN0QXN5bmNGdW5jdGlvbkV4
cHJlc3Npb24oKS5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHNob3Vs
ZEJlKHRlc3RBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oKS5fX3Byb3RvX18sIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUpOworICAgIHNob3VsZEJlKHRlc3RBc3luY0Fycm93RnVuY3Rpb24oKS5fX3By
b3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2Nh
dGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDgyZDE0NDJiNGNiMWZlZDYyNDAz
MGI2YTNiODBiNTRkZTMyNTRkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAg
LTAsMCArMSw0MSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNG
VU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKwor
ZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAo
bXNnKQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAi
ICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KK3ZhciBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24oKXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24g
Y2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChw
LCBxKSB7CisgICAgYXN5bmMgZnVuY3Rpb24gZigpIHsgfTsKKyAgICBpZiAocCkgeworICAgICAg
ICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAg
ICAgICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9
CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luayh0cnVlLCBmYWxzZSk7
CisgICAgc2hvdWxkQmUoby5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAg
IGlmIChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUg
MiBidXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9u
IHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUg
ZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmso
dHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSk7CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUg
MyBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1
bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctb3NyZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YTE4MGRmZmUwNDM3NzIyNWI2NjA4NTY5ZTM0OTY4NTYwMzgxMzc1Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1vc3Jl
eGl0LmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMy
MDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8v
QCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7
CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsg
bXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHByb21pc2UsIG1zZykgeworICAgIGxldCBh
Y3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgICBmdW5jdGlv
bihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFp
bk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFs
OworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKwordmFyIEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luYyBmdW5jdGlvbigpe30uX19wcm90b19fOworCitmdW5j
dGlvbiBzaW5rIChwLCBxKSB7CisgICAgYXN5bmMgZnVuY3Rpb24gZyh4KSB7IHJldHVybiB4OyB9
OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBnOyB9CisgICAgYXN5bmMg
ZnVuY3Rpb24gZih4KSB7IHJldHVybiB4OyB9OworICAgIHJldHVybiBmOworfQorbm9JbmxpbmUo
c2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0g
c2luayh0cnVlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUpOworICAgIHNob3VsZEJlQXN5bmMoNDIsIGYoNDIpKTsKK30KKworLy8gQXQg
dGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBG
VEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9u
IE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9f
XywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CitzaG91bGRCZUFzeW5jKDQyLCBmKDQyKSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5r
aW5nLXB1dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNp
bmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZjAyODE3NWRiZjIyODliODAwZmI3ZWZlM2ZkODlh
NDYyM2UxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlv
bi1kZWNsYXJhdGlvbi1zaW5raW5nLXB1dC5qcwpAQCAtMCwwICsxLDUyIEBACisvLyBUaGlzIHRl
c3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3Rl
ZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9y
ICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBwcm9t
aXNlLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwor
ICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwg
PSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3Ip
CisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyk7Cit9CisKK3ZhciBBc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24o
KXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIGFzeW5jIGZ1bmN0
aW9uIGcoeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQy
OyByZXR1cm4gZzsgfQorICAgIGFzeW5jIGZ1bmN0aW9uIGYoeCkgeyByZXR1cm4geDsgfTsKKyAg
ICByZXR1cm4gZjsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
Zi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIHNob3VsZEJlQXN5bmMo
NDIsIGYoNDIpKTsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBi
ZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0aGUgYWxsb2NhdGlvbiBvbiB0
aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0gc2luayh0cnVlLCBmYWxzZSk7
CitzaG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CitzaG91bGRC
ZUFzeW5jKDEyLCBmKDEyKSk7CisKKy8vIENoZWNrIHRoYXQgdGhlIGFsbG9jYXRpb24gZGlkIG5v
dCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAordmFyIGYgPSBzaW5rKHRydWUs
IHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOwor
dmFyIHJlc3VsdCA9IGYuaW5uZXI7CitpZiAocmVzdWx0ICE9PSA0MikKKyAgICB0aHJvdyAiRXJy
b3I6IGlubmVyIHNob3VsZCBiZSA0MiBidXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1uby1kb3VibGUt
YWxsb2NhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNTc2OTVkODE0NDE5MDZj
YjVlZjg1MTAyZDgzMjQ2YmEwN2Y1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpz
CkBAIC0wLDAgKzEsMzkgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FT
WU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lw
CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQordmFyIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luYyBmdW5jdGlvbigp
e30uX19wcm90b19fOworCitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQorbm9JbmxpbmUo
Y2FsbCk7CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZiA9IGFzeW5jIGZ1bmN0
aW9uKCkgeyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9j
YXRpb24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsK
K30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7
CisgICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShvLl9fcHJvdG9f
XywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQor
CisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24g
dG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxv
Y2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKGYu
X19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK2lmIChmLnggIT0gMykKKyAgICB0
aHJvdyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5n
LW9zcmV4aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNp
bmtpbmctb3NyZXhpdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDQwZGE4YzgyY2I5ZDE3NTUwZTliZTNkN2M1
ZWNmYWZmYzE0MmI3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVu
Y3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSw0MyBAQAorLy8g
VGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8g
YmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cg
PSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQs
IHByb21pc2UsIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFs
c2U7CisgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFj
dHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRF
cnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKTsKK30KKwordmFyIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luYyBmdW5j
dGlvbigpe30uX19wcm90b19fOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcg
PSBhc3luYyBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkg
T1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiAoeCkgeyBy
ZXR1cm4geDsgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHNob3VsZEJl
KGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZUFzeW5j
KDQyLCBmKDQyKSk7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQg
YmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9u
IGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRy
dWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworc2hv
dWxkQmVBc3luYyg0MiwgZig0MikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
ZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLXB1dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc1Y2RkZDQ5
YzE0NDBjNWIwNjFmNjYwZTQ5NmNmYmQyODA5NDIwNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanMKQEAgLTAs
MCArMSw0OSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5D
VElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVu
Y3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNn
KQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsg
YWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVBc3luYyhleHBlY3RlZCwgcHJvbWlzZSwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2
YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsg
YWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCit2YXIgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCl7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIHNpbmsgKHAs
IHEpIHsKKyAgICB2YXIgZyA9IGFzeW5jIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHg7IH07CisgICAg
aWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4gYXN5
bmMgZnVuY3Rpb24oeCkgeyByZXR1cm4geDsgfTsKK30KK25vSW5saW5lKHNpbmspOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1
ZSk7CisgICAgc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOwor
ICAgIHNob3VsZEJlQXN5bmMoNDIsIGYoNDIpKTsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhl
IGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gVGVzdCB0
aGUgYWxsb2NhdGlvbiBvbiB0aGUgaW1wbGljaXQgaW5uZXIgZWxzZSBicmFuY2gKK3ZhciBmID0g
c2luayh0cnVlLCBmYWxzZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZSk7CitzaG91bGRCZUFzeW5jKDEyLCBmKDEyKSk7CisKKy8vIENoZWNrIHRoYXQgdGhl
IGFsbG9jYXRpb24gZGlkIG5vdCBzaW5rIGJleW9uZCB0aGUgcHJvcGVydHkgYXNzaWdubWVudAor
dmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUpOworc2hvdWxkQmUoNDIsIGYuaW5uZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293174</attachid>
            <date>2016-10-28 10:51:36 -0700</date>
            <delta_ts>2016-11-14 11:53:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164037-20161028134744.patch</filename>
            <type>text/plain</type>
            <size>47665</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTdiYmVkMGY1NTUyNGE3NjQ4OGViYzc3YjA4MGNjMDJjMWM2OTUzLi42ZTUyZGQ5Mzk4M2Y5NDFh
MTg0MjBlMzk5YWY4YmViOGJlNzU3OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNi0xMC0yOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIEhhbmRsZSBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3luY19mdW5j
X2V4cCBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3lu
Y19mdW5jX2V4cCBpbnRvIERGRyBhbmQgRlRMLAorICAgICAgICBpbiBtdWNoIHRoZSBzYW1lIGNh
cGFjaXR5IHRoYXQgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5NDIxNiBhZGRl
ZAorICAgICAgICBERkcgLyBGVEwgc3VwcG9ydCBmb3IgZ2VuZXJhdG9yczogYnkgYWRkaW5nIG5l
dyBERkcgbm9kZXMgKE5ld0FzeW5jRnVuY3Rpb24gYW5kCisgICAgICAgIFBoYW50b21OZXdBc3lu
Y0Z1bmN0aW9uKSwgcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIHRoZSBleGlzdGluZyBOZXdGdW5jdGlv
biBub2RlIHR5cGUuCisKKyAgICAgICAgTGlrZSBOZXdGdW5jdGlvbiBhbmQgUGhhbnRvbU5ld0Z1
bmN0aW9uLCBhbmQgdGhlIEdlbmVyYXRvciB2YXJpYW50cywgYWxsb2NhdGlvbiBvZgorICAgICAg
ICBhc3luYyB3cmFwcGVyIGZ1bmN0aW9ucyBtYXkgYmUgZGVmZXJyZWQgb3IgZWxpbWluYXRlZCBk
dXJpbmcgdGhlIGFsbG9jYXRpb24gc2lua2luZworICAgICAgICBwaGFzZS4KKworICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICog
ZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUGhhbnRvbU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3QXN5bmNGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmlzRnVuY3Rpb25BbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc1Bo
YW50b21GdW5jdGlvbkFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhh
bnRvbUFsbG9jYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRM
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uUG9wdWxhdGVPYmpl
Y3RJbk9TUik6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJ
bk9TUik6CisKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKaW5kZXggNWQyYzgxMTQyNzcxYTQ5ZDlhYWY1M2Y3MTMxZDQyYjhlMmIz
NTUxNC4uN2U2YjdjMThlOTljMDk3ZDBjM2UyZDcyMTRiMmY5YzUzOTgwNTYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaApAQCAtMTk0Nyw2ICsxOTQ3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246
CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9t
TmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAg
IGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1
bWVudHM6CkBAIC0xOTg2LDYgKzE5ODcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldCgKKyAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRs
eSgpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldCgKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDA2MDMxNjhkOTIxNGMzNGIxNGNjYjcxMGM5MzBkZTRkMjhjMjgxNjkuLjM0OGY3ZTMxY2I1
OTdkM2E1MjdmYjgwOWQ2ZjBkM2UzNDUzYTA4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01MjQzLDIzICs1MjQzLDI5IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX25ld19mdW5jOgotICAgICAgICBjYXNlIG9w
X25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVu
YzoKKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogewogICAgICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBkZWNsID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5m
dW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAg
ICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoZGVjbCk7Ci0gICAg
ICAgICAgICBOb2RlVHlwZSBvcCA9IChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMp
ID8gTmV3R2VuZXJhdG9yRnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIE5vZGVU
eXBlIG9wID0gKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYykgPyBOZXdHZW5lcmF0
b3JGdW5jdGlvbiA6CisgICAgICAgICAgICAgICAgKG9wY29kZUlEID09IG9wX25ld19hc3luY19m
dW5jKSA/IE5ld0FzeW5jRnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3Jh
cGgob3AsIE9wSW5mbyhmcm96ZW4pLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENPREVf
TEVOR1RIKG9wX25ld19mdW5jKSA9PSBPUENPREVfTEVOR1RIKG9wX25ld19nZW5lcmF0b3JfZnVu
YyksICJUaGUgbGVuZ3RoIG9mIG9wX25ld19mdW5jIHNob3VsZCBlcWF1YWwgdG8gb25lIG9mIG9w
X25ld19nZW5lcmF0b3JfZnVuYyIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENPREVf
TEVOR1RIKG9wX25ld19mdW5jKSA9PSBPUENPREVfTEVOR1RIKG9wX25ld19hc3luY19mdW5jKSwg
IlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmMgc2hvdWxkIGVxYXVhbCB0byBvbmUgb2Ygb3BfbmV3
X2FzeW5jX2Z1bmMiKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgotICAgICAgICBjYXNlIG9w
X25ld19nZW5lcmF0b3JfZnVuY19leHA6IHsKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwOgorICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDogewogICAgICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleHByID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5mdW5jdGlvbkV4cHIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmco
ZXhwcik7Ci0gICAgICAgICAgICBOb2RlVHlwZSBvcCA9IChvcGNvZGVJRCA9PSBvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKSA/IE5ld0dlbmVyYXRvckZ1bmN0aW9uIDogTmV3RnVuY3Rpb247Cisg
ICAgICAgICAgICBOb2RlVHlwZSBvcCA9IChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKSA/IE5ld0dlbmVyYXRvckZ1bmN0aW9uIDoKKyAgICAgICAgICAgICAgICAob3Bjb2Rl
SUQgPT0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKSA/IE5ld0FzeW5jRnVuY3Rpb24gOiBOZXdGdW5j
dGlvbjsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhmcm96ZW4pLCBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwotICAgICAgICAg
ICAgCisgICAgCiAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfbmV3
X2Z1bmNfZXhwKSA9PSBPUENPREVfTEVOR1RIKG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApLCAi
VGhlIGxlbmd0aCBvZiBvcF9uZXdfZnVuY19leHAgc2hvdWxkIGVxYXVhbCB0byBvbmUgb2Ygb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENP
REVfTEVOR1RIKG9wX25ld19mdW5jX2V4cCkgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfYXN5bmNf
ZnVuY19leHApLCAiVGhlIGxlbmd0aCBvZiBvcF9uZXdfZnVuY19leHAgc2hvdWxkIGVxYXVhbCB0
byBvbmUgb2Ygb3BfbmV3X2FzeW5jX2Z1bmNfZXhwIik7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfZnVuY19leHApOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjMzIzZDQ2ZmJjM2NmNWMxMDQ5ZmEyNmZj
MGUxOTBmMjI3MWE0NzE4Li4xYmE2OGEwNDIxYmNiNGFiYzhhNTA4ODc3Y2UxMmM5MTJiNWE1YzEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yMzYsNiArMjM2LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25l
d19mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9w
X25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzoKKyAg
ICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3NldF9mdW5jdGlvbl9u
YW1lOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBv
cF9nZXRfcGFyZW50X3Njb3BlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAppbmRleCAwYmU4MWFlYmEyMzM5NDIxZDI1OTZkNzg2YjQxMTQ2NDg2MzU3MGZlLi43NDZm
ZGYyMTg1ZDg5MDYxYzU5NjY1N2FiZDE5NjMyMzZiNGMxZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTIxMiw2ICsxMjEyLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2Ug
UGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwpAQCAtMTIyMCw2ICsxMjIxLDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgIGlm
IChub2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5j
dGlvbigpLT5pc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgIHdyaXRlKFdhdGNocG9pbnRfZmly
ZSk7CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggYmQzMzliODlhNTEy
NGIzZjc0NzNhYTEyYTdkNDA4OTYwYjBjZWZmMy4uOTFmYjI3MTFlZjkxZTlmNWMxMzBiZGFjOTY1
MzFiNzIyYTk2MTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTYyLDYgKzYyLDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRT
dGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09i
amVjdDoKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAg
IGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0
ZUFjdGl2YXRpb246CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKQEAgLTgwLDYgKzgxLDcgQEAg
Ym9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAKICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2Fz
ZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICAvLyBMaWtlIGFib3ZlLCBidXQgd2l0aCB0aGUg
SlNGdW5jdGlvbiBhbGxvY2F0aW9uIGNhdmVhdC4KICAgICAgICAgcmV0dXJuIG5vZGUtPmNhc3RP
cGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCktPnNpbmdsZXRvbkZ1bmN0aW9uKCktPmlzU3Rp
bGxWYWxpZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
ZjM1YjY2Y2UxN2U0MDM5ODJkMDI4YWYzODJiOTFiZDYwODU3ZWFlNC4uN2VjZmNkZDM3ZDljZDc4
YWQwYzU3YjZiZmQ5MmU3MmZkY2U5MzU0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMjQ0LDYgKzI0NCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9t
TmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAg
Y2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50
b21DbG9uZWRBcmd1bWVudHM6CkBAIC0yODQsNiArMjg1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdGdW5j
dGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgTmV3QXN5bmNG
dW5jdGlvbjoKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBUaHJvd1N0YXRpY0Vy
cm9yOgogICAgIGNhc2UgR2V0UHJvcGVydHlFbnVtZXJhdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGJjMTAxNzUyMjY0NWUwOWZlOWFjNDQx
NjM4YjZjMWZlNWIzYzcxYS4uODNiYTVjMDM2NThjMjM5YjVhYTYxYWFkZTM1ZjY1NmNhNTNlMGQx
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
Mzk2LDYgKzEzOTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21O
ZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVu
dHM6CkBAIC0xNTUxLDcgKzE1NTIsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7Cisg
ICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5bmNG
dW5jdGlvbjogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKaW5kZXggODBiMzM3NGIzZWQ5ZTM0MDAxNmMyYzI2ZjVhNTgwYzgzYzYw
NDI3OC4uZmJiYjFiOTlmZTA5YjBlZTRlNDM3NGFkMzY5ZjE3M2YzZTZjNTE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgRXhp
dE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0
YXRlKQogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgTmV3QXN5bmNGdW5j
dGlvbjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFRvTnVtYmVyOgogICAg
ICAgICByZXN1bHQgPSBFeGl0c0ZvckV4Y2VwdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDBkMWE0YjU1ODE0MzcyOWFhOGMzMjJmMjg0NjE4M2QxZDQzNjRkM2IuLjA2
Mzc3ZDJhZWJkMDhmYmY4YmVlMmZmZWI1ZjM0NTk2MjIwZjQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC01ODQsNyArNTg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
b252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gTmV3RnVuY3Rpb24gfHwgbV9vcCA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgICAg
IEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3AgPT0gTmV3R2VuZXJhdG9yRnVuY3Rp
b24gfHwgbV9vcCA9PSBOZXdBc3luY0Z1bmN0aW9uKTsKICAgICAgICAgbV9vcCA9IFBoYW50b21O
ZXdGdW5jdGlvbjsKICAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVzdEdlbmVyYXRlOwogICAgICAg
ICBtX29wSW5mbyA9IE9wSW5mb1dyYXBwZXIoKTsKQEAgLTYwMiw2ICs2MDIsMTYgQEAgcHVibGlj
OgogICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX29wID09IE5ld0FzeW5jRnVuY3Rpb24pOworICAgICAgICBtX29wID0gUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb247CisgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAg
ICAgbV9vcEluZm8gPSBPcEluZm9XcmFwcGVyKCk7CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5m
b1dyYXBwZXIoKTsKKyAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQor
CiAgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9vcCA9PSBDcmVhdGVBY3RpdmF0aW9uIHx8IG1fb3AgPT0gTWF0ZXJpYWxp
emVDcmVhdGVBY3RpdmF0aW9uKTsKQEAgLTE0ODUsNiArMTQ5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoK
ICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBOZXdBc3lu
Y0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKQEAg
LTE3MjAsNiArMTczMSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAg
ICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246
CisgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTczMSw2
ICsxNzQzLDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1
bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xNzQ1LDYgKzE3NTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNs
b25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21O
ZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzVhYTYyZTEyNTY3MGEzNWNjMDhmMjE3ZDNj
MTc0N2NiMDRmMDkzNC4uYTQ4M2YxMWQxNjUzNzA4OGYyNzMzNzk4NTIxMDU2NGMwZjk4NDg4NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzA1LDYgKzMwNSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNYXRlcmlhbGl6
ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQ
aGFudG9tTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQaGFudG9tTmV3QXN5bmNGdW5jdGlvbiwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0
ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIFwKQEAgLTM1MSw2ICszNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBcCisgICAgbWFjcm8oTmV3QXN5bmNGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCisg
ICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0ICovIFwK
ICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRocm93U3Rh
dGljRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmlu
ZGV4IDgxYzMwNjE2OTE3YTU4MWIxMTBmYjY2NTVhOWZiMjg2OTE3YjcxNjcuLmExYjgzOTM2OTg1
NGRjN2ZjYTlkNDM0Y2ZiYmQyYjk5ODc0NmYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlzIGVzY2FwZWQg
aWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAgLy8gcmVwbGFj
ZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5nCiAgICAgLy8g
bWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwgT2JqZWN0LCBB
Y3RpdmF0aW9uLCBGdW5jdGlvbiwgR2VuZXJhdG9yRnVuY3Rpb24gfTsKKyAgICBlbnVtIGNsYXNz
IEtpbmQgeyBFc2NhcGVkLCBPYmplY3QsIEFjdGl2YXRpb24sIEZ1bmN0aW9uLCBHZW5lcmF0b3JG
dW5jdGlvbiwgQXN5bmNGdW5jdGlvbiB9OwogCiAgICAgZXhwbGljaXQgQWxsb2NhdGlvbihOb2Rl
KiBpZGVudGlmaWVyID0gbnVsbHB0ciwgS2luZCBraW5kID0gS2luZDo6RXNjYXBlZCkKICAgICAg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTIzMyw3ICsyMzMsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzRnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2tpbmQgPT0gS2luZDo6RnVuY3Rpb24gfHwgbV9raW5kID09IEtpbmQ6OkdlbmVy
YXRvckZ1bmN0aW9uOworICAgICAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OkZ1bmN0aW9uIHx8
IG1fa2luZCA9PSBLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbiB8fCBtX2tpbmQgPT0gS2luZDo6QXN5
bmNGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2NhdGlv
biYgb3RoZXIpIGNvbnN0CkBAIC0yNzMsNiArMjczLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG91dC5wcmludCgiR2VuZXJhdG9yRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgIGNhc2UgS2luZDo6QXN5bmNGdW5jdGlvbjoKKyAgICAgICAgICAgIG91dC5wcmludCgi
QXN5bmNGdW5jdGlvbiIpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBLaW5k
OjpBY3RpdmF0aW9uOgogICAgICAgICAgICAgb3V0LnByaW50KCJBY3RpdmF0aW9uIik7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTgzMiwxNiArODM2LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246Cisg
ICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAgaWYgKGlzU3RpbGxW
YWxpZChub2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25G
dW5jdGlvbigpKSkgewogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+Y2hpbGQx
KCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5j
dGlvbikKICAgICAgICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9k
ZSwgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb24pOworICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBOZXdBc3luY0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHRh
cmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpBc3lu
Y0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0YXJnZXQgPSAm
bV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb24pOwor
CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsIExhenlOb2Rl
KG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5hZGQoRnVuY3Rpb25B
Y3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE0NDQsMTIgKzE0NTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBPcEluZm8oc2V0KSwgT3BJbmZvKGRhdGEpLCAwLCAwKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBB
bGxvY2F0aW9uOjpLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBBbGxvY2F0
aW9uOjpLaW5kOjpGdW5jdGlvbjogewogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGV4ZWN1dGFi
bGUgPSBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKS0+Y2VsbE9wZXJhbmQoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgTm9kZVR5cGUgbm9kZVR5cGUgPQotICAgICAgICAgICAgICAgIGFsbG9j
YXRpb24ua2luZCgpID09IEFsbG9jYXRpb246OktpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uID8gTmV3
R2VuZXJhdG9yRnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmtpbmQoKSA9PSBBbGxvY2F0aW9uOjpLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbiA/IE5ld0dl
bmVyYXRvckZ1bmN0aW9uIDoKKyAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmtpbmQoKSA9PSBB
bGxvY2F0aW9uOjpLaW5kOjpBc3luY0Z1bmN0aW9uID8gTmV3QXN5bmNGdW5jdGlvbiA6IE5ld0Z1
bmN0aW9uOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2Rl
KAogICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5wcmVkaWN0aW9uKCks
IG5vZGVUeXBlLApAQCAtMTc5MSw2ICsxODAxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNh
c2UgTmV3QXN5bmNGdW5jdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlv
bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDQ3LDcgKzIwNjEsOCBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAg
ICAgICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0
aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwogICAgICAgICAgICAgQVNTRVJUKGxvY2F0
aW9ucy5zaXplKCkgPT0gMik7CiAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CmluZGV4IGUxMTQyOGM3OTA1M2E5NzRiNjUxYjRhM2VkYmEyNWY5ZWE2OGU3NGQuLmVhZjNjZDI1
OTUzNzA1NWRmOWQwNzcwZGQ4MDdlZjg3OTNiZDJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CkBAIC03MjksNyArNzI5LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CiAg
ICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTEwMDEsNiArMTAwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5l
d09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3lu
Y0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25l
ZEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggNjliYmUxMWU1ZGFlNjdhNzE1ODcyMjFlYTE1Njk4MWFjM2MzZjUyZC4uYWI0Yzcw
YzliMWM0MTEyMjIzZWE4N2Q4MDUwYWIyNjQwNzI1ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI5OSw2ICsyOTksNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgog
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9u
OgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKQEAg
LTM0Nyw2ICszNDgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0
YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVy
YXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2Fz
ZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNmNjZmZiNWRmN2ZjYmE3NzIzYTZjZDZkNjljNGY1
ZTJkMDBlYjNkYy4uMzk0N2Q1OWM0MjQ4ODcxZGU4OWEyMWY1Y2IzNmYzNzU3NDEyNWI5OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKSVRNdWxHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJK
SVRSaWdodFNoaWZ0R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUU3ViR2VuZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0
aW9uLmgiCkBAIC02MzYzLDcgKzYzNjQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBl
PiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUgogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiB7CiAgICAg
Tm9kZVR5cGUgbm9kZVR5cGUgPSBub2RlLT5vcCgpOwotICAgIEFTU0VSVChub2RlVHlwZSA9PSBO
ZXdGdW5jdGlvbiB8fCBub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgQVNT
RVJUKG5vZGVUeXBlID09IE5ld0Z1bmN0aW9uIHx8IG5vZGVUeXBlID09IE5ld0dlbmVyYXRvckZ1
bmN0aW9uIHx8IG5vZGVUeXBlID09IE5ld0FzeW5jRnVuY3Rpb24pOwogICAgIAogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcg
c2NvcGVHUFIgPSBzY29wZS5ncHIoKTsKQEAgLTYzNzgsNiArNjM3OSw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogCiAgICAgICAgIGlmIChu
b2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbikKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4
ZWN1dGFibGUpOworICAgICAgICBlbHNlIGlmIChub2RlVHlwZSA9PSBOZXdBc3luY0Z1bmN0aW9u
KQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBy
ZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQ
UiwgZXhlY3V0YWJsZSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02Mzg3
LDYgKzYzOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oTm9k
ZSogbm9kZSkKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KICAgICAgICAgbm9kZVR5cGUg
PT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24gPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKKyAg
ICAgICAgbm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVD
b25jdXJyZW50bHkoKSA6CiAgICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgCiAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTY0MTEsNiArNjQxNSwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdH
ZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsIHJl
c3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpKTsKICAgICB9CiAKKyAgICBpZiAobm9kZVR5
cGUgPT0gTmV3QXN5bmNGdW5jdGlvbikgeworICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21t
b248SlNBc3luY0Z1bmN0aW9uPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSLCBzY29wZUdQUiwgc2xvd1BhdGgsIEpTQXN5bmNGdW5jdGlvbjo6YWxsb2NhdGlv
blNpemUoMCksIGV4ZWN1dGFibGUsIEpTQXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWlu
KCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCksIEpTQXN5bmNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsKKworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBl
eGVjdXRhYmxlKSk7CisgICAgfQorCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCA0NThhMjkyOWY1OWE2NmQ0YmFkYjFhNGJhMmM1Zjc4Yjg3NTgzMTRj
Li5lODk2NzcxZmE3ZTAxMmE5ZjkyM2YzNTNjMjBhMTM5MTZjNTkwZGU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTQ5OTksNiArNDk5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKIAogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlv
bjoKKyAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlv
bihub2RlKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTU1ODUsNiArNTU4Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2Vu
ZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBj
YXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNl
IENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZDE4NWI5ZDYwMjdjMWVjYTEyZjExNTFm
OTM0MjMxYWM3N2E5YTk2MS4uNmUzMjBmN2Y2MjU4ZWU2ZDNlNjNjZGNkYTE5MzUzM2YxMDNhYWQx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC01MTY0LDYgKzUxNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjb21waWxl
TmV3RnVuY3Rpb24obm9kZSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC01ODAxLDYgKzU4MDIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFu
dG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhh
bnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rp
b246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbDoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcAppbmRleCBmNDA3YjdmMWRlNzBlN2M1MGE3ODVlODU4MGNiOTg1MGI3
OTU0MGZiLi5jMjc0NTBjZGExZjM3ZjcyNDQ1MmZhOGZiODYxNDg2NjhhNjc5YTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcApAQCAtMzEzLDYgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICAgICAg
Y2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICAgICAgICAgIC8vIE5vZGVzIHRoYXQgYWxs
b2NhdGUgZ2V0IHRvIHNldCB0aGVpciBlcG9jaCBiZWNhdXNlIGZvciB0aG9zZSBub2RlcyB3ZSBr
bm93CiAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGV5IHdpbGwgYmUgdGhlIG5ld2VzdCBvYmpl
Y3QgaW4gdGhlIGhlYXAuCiAgICAgICAgICAgICAgICAgbV9ub2RlLT5zZXRFcG9jaChtX2N1cnJl
bnRFcG9jaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDUxY2Y0ODk2MGE4YjFmZjU3MmE4
NjllYWUxOGJmMGE5ZjVhMjc5ZGQuLmQxNGYwYmEyNmFhMmYwY2E0ZjMwMzYzN2Q1YTZlNmZlMTBi
ZDMyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNTMsNiArMTUzLDkgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rp
b246CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVD
b25jdXJyZW50bHkoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDkxOGQ4YWQ0NTlmNjQxMTgyNGFiNmFl
YmZjNzYyY2FmMTNiOTQ3ZmYuLmNmN2JlM2JkZWIwZGVhNTljMjk4N2U4OTE0NGE3MjdlYTg3MmJh
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC01Mjks
NiArNTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAg
ICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6
CkBAIC02NjgsNiArNjY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAg
ICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1
bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggZWY1ZjNmMWFmMDFmZWI1ZjA5Y2U1NGMxNDAwMGI1YTVhZjZjNDg5Zi4uNzYyMjA1MDQw
NmE2MWQ1YTRhYjM2ZmI0NzczNmFkYmJjMzEwYmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTE3LDYgKzExNyw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVu
Y3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZh
cjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVu
dHM6CkBAIC0yMjMsNiArMjI0LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRv
bU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAg
IGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVk
aWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCA4Y2E0NGY4NTE2MmEyNTJkOWFhMmU4YmVlMGQyNWU4Nzk1OWQ2YWU5Li42NGNjZmY4YWJi
ZTUyMjQzZWM3MjY3ZWU2YTljZjA1ZmU3MzA2Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03MTAsNiArNzEwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBj
YXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246
CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24oKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKQEAgLTEwNjksNiArMTA3MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1
bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKQEAgLTM5NTYsOCAr
Mzk1OCw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSA9PSBOZXdGdW5jdGlvbiB8fCBtX25v
ZGUtPm9wKCkgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24pOworICAgICAgICBBU1NFUlQobV9ub2Rl
LT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5j
dGlvbiB8fCBtX25vZGUtPm9wKCkgPT0gTmV3QXN5bmNGdW5jdGlvbik7CiAgICAgICAgIGJvb2wg
aXNHZW5lcmF0b3JGdW5jdGlvbiA9IG1fbm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlv
bjsKKyAgICAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb24gPSBtX25vZGUtPm9wKCkgPT0gTmV3QXN5
bmNGdW5jdGlvbjsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIApAQCAtMzk2NSw2ICszOTY4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxp
ZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9CiAgICAgICAgICAgICAgICAg
aXNHZW5lcmF0b3JGdW5jdGlvbiA/IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRl
cihleGVjdXRhYmxlKSkgOgorICAgICAgICAgICAgICAgIGlzQXN5bmNGdW5jdGlvbiA/IHZtQ2Fs
bChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24pLCBtX2Nh
bGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKSA6CiAgICAgICAgICAgICAg
ICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24pLCBt
X2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAg
IHNldEpTVmFsdWUoY2FsbFJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTcyLDYg
KzM5NzYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPQogICAgICAgICAgICAgaXNHZW5lcmF0b3JGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSA6CisgICAgICAgICAgICBpc0FzeW5jRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25j
dXJyZW50bHkoKSA6CiAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgICAgIAogICAgICAg
ICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00MDA1LDYgKzQw
MTAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5k
aXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpKTsKICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmNGdW5jdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpKTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlk
YXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsCiAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9u
c1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggYmVlZWJjMDNlZTNlNTY0MDJj
ZTFlNzdlMzNhMjgwZjI1ZDBkODBlZi4uNjk3ZjJkZGY1N2YyNjM4MWYwNWE5MDJkMTBlYTQ5OTQ0
ZmIyYmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRlRMSklUQ29kZS5oIgogI2luY2x1ZGUgIkZU
TExhenlTbG93UGF0aC5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgorI2luY2x1ZGUg
IkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIK
QEAgLTgxLDYgKzgyLDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UG9wdWxhdGVPYmplY3RJbk9TUigKIAogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAg
IGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2Ug
UGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgLy8gVGhvc2UgYXJlIGNvbXBsZXRlbHkg
aGFuZGxlZCBieSBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSCkBAIC0xNTAsNyArMTUy
LDggQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxp
emVPYmplY3RJbk9TUigKICAgICB9CiAKICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKLSAg
ICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjogeworICAgIGNhc2UgUGhhbnRvbU5l
d0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246IHsK
ICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRoZSBleGVjdXRhYmxlIGFuZCBhY3RpdmF0aW9u
IGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgICAgICBKU1Njb3BlKiBhY3RpdmF0aW9uID0gbnVsbHB0cjsKQEAgLTE2NSw4ICsxNjgsMTAg
QEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVP
YmplY3RJbk9TUigKIAogICAgICAgICBpZiAobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhh
bnRvbU5ld0Z1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZVdp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2
YXRpb24pOwotICAgICAgICBBU1NFUlQobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRv
bU5ld0dlbmVyYXRvckZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rp
b246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1
dGFibGUsIGFjdGl2YXRpb24pOworICAgICAgICBlbHNlIGlmIChtYXRlcmlhbGl6YXRpb24tPnR5
cGUoKSA9PSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4g
SlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7ICAgIAorICAgICAgICBBU1NFUlQo
bWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb24pOworICAg
ICAgICByZXR1cm4gSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uKTsKICAgICB9CiAKICAg
ICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNmOGIxYzFhYTU3ZjRiYzhkMmViZjQ4
YzdlMGQwODI5MTlhMzQxM2EuLmRjODYyMTQ5NzhjNTQwMjFkYjIzZTVlYzM0YTNiYzhmZDYyMzUy
ZTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMjggIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdh
bGlhLmNvbT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgbmV3X2FzeW5jX2Z1bmMgLyBuZXdfYXN5
bmNfZnVuY19leHAgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgYmFzZWQgb24gdGVzdHMgZnJvbSBodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTk0MjE2LgorCisgICAgICAgICogYXN5bmNGdW5jdGlv
blRlc3RzLnlhbWw6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWNyZWF0ZS1vcHRp
bWl6ZWQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJh
dGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctb3NyZXhpdC5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Fz
eW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLXB1dC5qczogQWRk
ZWQuCisKIDIwMTYtMTAtMjggIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBTa2lwIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbnNlLXNldC5qcyBvbiBt
ZW1vcnkgbGltaXRlZCBkZXZpY2VzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2FzeW5jRnVuY3Rpb25U
ZXN0cy55YW1sIGIvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMueWFtbAppbmRleCA1ZmI3OGJl
ZDc0YmM0ODAyMTIzYjY2NmM3NTZiMTUyNGY4YjUyMWE2Li4wOGU0NzQyM2I2NzA1ZDFhOWZmMDBi
ZmEyYmEyOWE0ZDAzN2ViMTZhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL2FzeW5jRnVuY3Rpb25UZXN0
cy55YW1sCisrKyBiL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwKQEAgLTQ0LDYgKzQ0
LDIyIEBACiAtIHBhdGg6IHN0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCiAgIGNt
ZDogcnVuRGVmYXVsdAogCisjIEZUTEpJVAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24t
Y3JlYXRlLW9wdGltaXplZC5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2Fz
eW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCisg
IGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRp
b24tc2lua2luZy1vc3JleGl0LmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3Mv
YXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1wdXQuanMKKyAgY21kOiBydW5EZWZh
dWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctbm8t
ZG91YmxlLWFsbG9jYXRlLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5
bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW9zcmV4aXQuanMKKyAgY21kOiBydW5EZWZh
dWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctcHV0
LmpzCisgIGNtZDogcnVuRGVmYXVsdAorCiAjIFRlc3QyNjIKIC0gcGF0aDogdGVzdDI2Mi90ZXN0
L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24tY29uc3RydWN0LmpzCiAgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzIGIvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW9wdGltaXplZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
NmY0ZTA0YmRlYjRlN2Q3YWQ1NWUxZGJjNGFkN2Y3ODI4ODFhM2FmCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW9wdGltaXplZC5qcwpAQCAt
MCwwICsxLDQ3IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZV
TkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKwordmFyIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luYyBmdW5jdGlvbigpIHt9
Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gdGVzdEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKCkKK3sK
KyAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgYXdhaXQgNDI7Cisg
ICAgICAgIHJldHVybiAxOworICAgIH07Cit9Citub0lubGluZSh0ZXN0QXN5bmNGdW5jdGlvbkV4
cHJlc3Npb24pOworCitmdW5jdGlvbiB0ZXN0QXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKCkKK3sK
KyAgICBhc3luYyBmdW5jdGlvbiBhc3luY0ZuKCkKKyAgICB7CisgICAgICAgIGF3YWl0IDQyOwor
ICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gYXN5bmNGbjsKK30KK25vSW5s
aW5lKHRlc3RBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24pOworCitmdW5jdGlvbiB0ZXN0QXN5bmNB
cnJvd0Z1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gYXN5bmMoKSA9PgorICAgIHsKKyAgICAgICAg
YXdhaXQgNDI7CisgICAgICAgIHJldHVybiAxOworICAgIH07Cit9Citub0lubGluZSh0ZXN0QXN5
bmNBcnJvd0Z1bmN0aW9uKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
IHNob3VsZEJlKHRlc3RBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbigpLl9fcHJvdG9fXywgQXN5bmNG
dW5jdGlvblByb3RvdHlwZSk7CisgICAgc2hvdWxkQmUodGVzdEFzeW5jRnVuY3Rpb25EZWNsYXJh
dGlvbigpLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgc2hvdWxkQmUo
dGVzdEFzeW5jQXJyb3dGdW5jdGlvbigpLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJh
dGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBkODJkMTQ0MmI0Y2IxZmVkNjI0MDMwYjZhM2I4MGI1NGRlMzI1NGQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5r
aW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDQxIEBACisvLyBUaGlzIHRlc3Qg
cmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVk
IGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwg
YWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9yICIg
KyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWQpOworfQordmFyIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luYyBmdW5jdGlv
bigpe30uX19wcm90b19fOworCitmdW5jdGlvbiBjYWxsKG8pIHsgby54ID0gMzsgfQorbm9Jbmxp
bmUoY2FsbCk7CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICBhc3luYyBmdW5jdGlvbiBm
KCkgeyB9OworICAgIGlmIChwKSB7CisgICAgICAgIGNhbGwoZik7IC8vIEZvcmNlIGFsbG9jYXRp
b24gb2YgZgorICAgICAgICBpZiAocSkgeworICAgICAgICAgICAgT1NSRXhpdCgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmOworICAgIH0KKyAgICByZXR1cm4geyAneCc6IDIgfTsKK30K
K25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Cisg
ICAgdmFyIG8gPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBzaG91bGRCZShvLl9fcHJvdG9fXywg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgaWYgKG8ueCAhPSAzKQorICAgICAgICB0aHJv
dyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAyIGJ1dCBpcyAiICsgcmVzdWx0OworfQorCisv
LyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8g
dGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0
ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKGYuX19w
cm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK2lmIChmLnggIT0gMykKKyAgICB0aHJv
dyAiRXJyb3I6IGV4cGVjdGVkIG8ueCB0byBiZSAzIGJ1dCBpcyAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1v
c3JleGl0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lu
a2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMTgwZGZmZTA0Mzc3MjI1YjY2MDg1NjllMzQ5
Njg1NjAzODEzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5j
dGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKQEAgLTAsMCArMSw0NSBAQAorLy8g
VGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8g
YmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cg
PSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3Rl
ZCwgcHJvbWlzZSwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7
IH0sCisgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsg
YWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhh
ZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwg
YWN0dWFsLCBtc2cpOworfQorCit2YXIgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA9IGFzeW5jIGZ1
bmN0aW9uKCl7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICBhc3lu
YyBmdW5jdGlvbiBnKHgpIHsgcmV0dXJuIHg7IH07CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4
aXQoKTsgcmV0dXJuIGc7IH0KKyAgICBhc3luYyBmdW5jdGlvbiBmKHgpIHsgcmV0dXJuIHg7IH07
CisgICAgcmV0dXJuIGY7Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBzaG91
bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgc2hvdWxkQmVB
c3luYyg0MiwgZig0MikpOworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hv
dWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5j
dGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVl
LCB0cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsK
K3Nob3VsZEJlQXN5bmMoNDIsIGYoNDIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
YXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1wdXQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Nm
MDI4MTc1ZGJmMjI4OWI4MDBmYjdlZmUzZmQ4OWE0NjIzZTFmOQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0Lmpz
CkBAIC0wLDAgKzEsNTIgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FT
WU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lw
CisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAg
aWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsg
IjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHByb21pc2UsIG1zZykgeworICAgIGxldCBhY3R1YWw7
CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHZh
bHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3Jv
dGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisg
ICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKwordmFyIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUgPSBhc3luYyBmdW5jdGlvbigpe30uX19wcm90b19fOworCitmdW5jdGlvbiBz
aW5rIChwLCBxKSB7CisgICAgYXN5bmMgZnVuY3Rpb24gZyh4KSB7IHJldHVybiB4OyB9OworICAg
IGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgYXN5bmMgZnVu
Y3Rpb24gZih4KSB7IHJldHVybiB4OyB9OworICAgIHJldHVybiBmOworfQorbm9JbmxpbmUoc2lu
ayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2lu
ayh0cnVlLCB0cnVlKTsKKyAgICBzaG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZSk7CisgICAgc2hvdWxkQmVBc3luYyg0MiwgZig0MikpOworfQorCisvLyBBdCB0aGlz
IHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAor
CisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNpdCBpbm5lciBlbHNlIGJyYW5j
aAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKTsKK3Nob3VsZEJlQXN5bmMoMTIsIGYoMTIpKTsKKworLy8gQ2hl
Y2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5b25kIHRoZSBwcm9wZXJ0eSBh
c3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9f
XywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7Cit2YXIgcmVzdWx0ID0gZi5pbm5lcjsKK2lmIChy
ZXN1bHQgIT09IDQyKQorICAgIHRocm93ICJFcnJvcjogaW5uZXIgc2hvdWxkIGJlIDQyIGJ1dCBp
cyAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24t
ZXhwcmVzc2lvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODM1NzY5NWQ4MTQ0MTkwNmNiNWVmODUxMDJkODMyNDZiYTA3ZjVhNAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24t
c2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKQEAgLTAsMCArMSwzOSBAQAorLy8gVGhpcyB0
ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5h
YmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Cit2YXIgQXN5bmNGdW5jdGlv
blByb3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCl7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIGNh
bGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAocCwg
cSkgeworICAgIHZhciBmID0gYXN5bmMgZnVuY3Rpb24oKSB7IH07CisgICAgaWYgKHApIHsKKyAg
ICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7
CisgICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7Cisg
ICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFs
c2UpOworICAgIHNob3VsZEJlKG8uX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsK
KyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRv
IGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5j
dGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQg
dGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBz
aW5rKHRydWUsIHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRv
IGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3lu
Yy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctb3NyZXhpdC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE0NDBkYThjODJjYjlkMTc1NTBlOWJlM2Q3YzVlY2ZhZmZjMTQyYjcKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctb3Ny
ZXhpdC5qcwpAQCAtMCwwICsxLDQzIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VT
MjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisv
L0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikg
eworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiAr
IG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorZnVu
Y3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcHJvbWlzZSwgbXNnKSB7CisgICAgbGV0IGFj
dHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBwcm9taXNlLnRoZW4oZnVuY3Rp
b24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWlu
TWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7
CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCit2YXIgQXN5bmNG
dW5jdGlvblByb3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCl7fS5fX3Byb3RvX187CisKK2Z1bmN0
aW9uIHNpbmsgKHAsIHEpIHsKKyAgICB2YXIgZyA9IGFzeW5jIGZ1bmN0aW9uICh4KSB7IHJldHVy
biB4OyB9OworICAgIGlmIChwKSB7IGlmIChxKSBPU1JFeGl0KCk7IHJldHVybiBnOyB9CisgICAg
cmV0dXJuIGFzeW5jIGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9OworfQorbm9JbmxpbmUoc2lu
ayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBmID0gc2lu
ayh0cnVlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUpOworICAgIHNob3VsZEJlQXN5bmMoNDIsIGYoNDIpKTsKK30KKworLy8gQXQgdGhp
cyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwK
KworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9T
UiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CitzaG91bGRCZUFzeW5jKDQyLCBmKDQyKSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmct
cHV0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5n
LXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNzVjZGRkNDljMTQ0MGM1YjA2MWY2NjBlNDk2Y2ZiZDI4MDk0
MjA2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhw
cmVzc2lvbi1zaW5raW5nLXB1dC5qcwpAQCAtMCwwICsxLDQ5IEBACisvLyBUaGlzIHRlc3QgcmVx
dWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0
IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0
dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBt
c2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBwcm9taXNlLCBt
c2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHBy
b21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJv
cjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAg
ICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7
Cit9CisKK3ZhciBBc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24oKXt9Ll9f
cHJvdG9fXzsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBnID0gYXN5bmMgZnVu
Y3Rpb24oeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgZy5pbm5lciA9IDQy
OyByZXR1cm4gZzsgfQorICAgIHJldHVybiBhc3luYyBmdW5jdGlvbih4KSB7IHJldHVybiB4OyB9
OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg
eworICAgIHZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKKyAgICBzaG91bGRCZShmLl9fcHJvdG9f
XywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgc2hvdWxkQmVBc3luYyg0MiwgZig0Mikp
OworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVk
IGRvd24gdG8gdGhlIEZUTAorCisvLyBUZXN0IHRoZSBhbGxvY2F0aW9uIG9uIHRoZSBpbXBsaWNp
dCBpbm5lciBlbHNlIGJyYW5jaAordmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKK3Nob3VsZEJl
KGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK3Nob3VsZEJlQXN5bmMoMTIs
IGYoMTIpKTsKKworLy8gQ2hlY2sgdGhhdCB0aGUgYWxsb2NhdGlvbiBkaWQgbm90IHNpbmsgYmV5
b25kIHRoZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7Citz
aG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CitzaG91bGRCZSg0
MiwgZi5pbm5lcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294725</attachid>
            <date>2016-11-14 11:53:40 -0800</date>
            <delta_ts>2016-11-14 13:17:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164037-20161114144920.patch</filename>
            <type>text/plain</type>
            <size>57498</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NGNlMGNjODc4YTY2ZjRjNzk5NGI4Mjg2OGUzYTA0NzkzMDNhZmU3Li45OGMxYjE1NzFmY2IxYWIy
NWE0OTUzMGU5NTMyZjhjMGE1YjJlOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNi0xMS0xNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIEhhbmRsZSBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3luY19mdW5j
X2V4cCBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3lu
Y19mdW5jX2V4cCBpbnRvIERGRyBhbmQgRlRMLAorICAgICAgICBpbiBtdWNoIHRoZSBzYW1lIGNh
cGFjaXR5IHRoYXQgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5NDIxNiBhZGRl
ZAorICAgICAgICBERkcgLyBGVEwgc3VwcG9ydCBmb3IgZ2VuZXJhdG9yczogYnkgYWRkaW5nIG5l
dyBERkcgbm9kZXMgKE5ld0FzeW5jRnVuY3Rpb24gYW5kCisgICAgICAgIFBoYW50b21OZXdBc3lu
Y0Z1bmN0aW9uKSwgcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIHRoZSBleGlzdGluZyBOZXdGdW5jdGlv
biBub2RlIHR5cGUuCisKKyAgICAgICAgTGlrZSBOZXdGdW5jdGlvbiBhbmQgUGhhbnRvbU5ld0Z1
bmN0aW9uLCBhbmQgdGhlIEdlbmVyYXRvciB2YXJpYW50cywgYWxsb2NhdGlvbiBvZgorICAgICAg
ICBhc3luYyB3cmFwcGVyIGZ1bmN0aW9ucyBtYXkgYmUgZGVmZXJyZWQgb3IgZWxpbWluYXRlZCBk
dXJpbmcgdGhlIGFsbG9jYXRpb24gc2lua2luZworICAgICAgICBwaGFzZS4KKworICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICog
ZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUGhhbnRvbU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpjb252ZXJ0VG9QaGFudG9tTmV3QXN5bmNGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmlzRnVuY3Rpb25BbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc1Bo
YW50b21GdW5jdGlvbkFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhh
bnRvbUFsbG9jYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRM
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uUG9wdWxhdGVPYmpl
Y3RJbk9TUik6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJ
bk9TUik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90
eXBlQ29uY3VycmVudGx5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkpOiBEZWxldGVkLgorCiAyMDE2LTEx
LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIG9mIEpT
U3RyaW5nVmlldzo6U2FmZVZpZXcgbWV0aG9kcyBhcmUgbm90IGlkaW9tYXRpY2FsbHkgc2FmZSBm
b3IgSlNTdHJpbmcgdG8gU3RyaW5nVmlldyBjb252ZXJzaW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKaW5k
ZXggMjI0Nzg4MmFmYzhiMGUzZTE0YWNmZGM3YzdhMTA3MDRhZjMxMzRjMi4uZWE5MGVmNGQ0Mzhl
YTZmOTExZWExOWE5MTViNGI4ZjQ3ZjQ1NmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTIzLDYg
KzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorQGdsb2JhbFByaXZhdGUKIGZ1bmN0aW9u
IGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiB7
CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDhjN2U2MzFjMzk5MDU4
N2RiYjA4NjQ2YTg4OWNkOWM3MGUyNmM3YjcuLjVkZjRkYTM1ODFmNTFmYTY2YTg4ZDE5MGY0Y2I4
Y2E5MDZhMmY3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE5NzAsNiArMTk3MCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
Q3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAg
Y2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOgpAQCAtMjAxNCw2ICsyMDE1LDExIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKCkpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoK
KyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCisgICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoK
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoCiAgICAgICAgICAgICBtX2dyYXBoLCBtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3Ry
dWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAxYTk0MWQxYjMxYTUyNDg5YTQzZjRkZTYxZGVjMzA0OGRhZWU0ZTgyLi5l
N2E4MzE0ZGU0NjlmYjBjMTY3MmQ3YmY4YzZiMGJiZmZhMmNkYTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTMyNSwyMyArNTMy
NSwyOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9uZXdfZnVuYzoKLSAgICAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6IHsKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmM6CisgICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6IHsKICAgICAgICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZGVjbCA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+ZnVuY3Rpb25EZWNsKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGRl
Y2wpOwotICAgICAgICAgICAgTm9kZVR5cGUgb3AgPSAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVy
YXRvcl9mdW5jKSA/IE5ld0dlbmVyYXRvckZ1bmN0aW9uIDogTmV3RnVuY3Rpb247CisgICAgICAg
ICAgICBOb2RlVHlwZSBvcCA9IChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpID8g
TmV3R2VuZXJhdG9yRnVuY3Rpb24gOgorICAgICAgICAgICAgICAgIChvcGNvZGVJRCA9PSBvcF9u
ZXdfYXN5bmNfZnVuYykgPyBOZXdBc3luY0Z1bmN0aW9uIDogTmV3RnVuY3Rpb247CiAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJvemVuKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuYykgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpLCAiVGhlIGxlbmd0aCBvZiBvcF9uZXdfZnVuYyBzaG91bGQgZXFhdWFsIHRv
IG9uZSBvZiBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuYykgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfYXN5
bmNfZnVuYyksICJUaGUgbGVuZ3RoIG9mIG9wX25ld19mdW5jIHNob3VsZCBlcWF1YWwgdG8gb25l
IG9mIG9wX25ld19hc3luY19mdW5jIik7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdf
ZnVuYyk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKLSAgICAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6
IHsKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhwciA9IG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpOwogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJl
ZXplU3Ryb25nKGV4cHIpOwotICAgICAgICAgICAgTm9kZVR5cGUgb3AgPSAob3Bjb2RlSUQgPT0g
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkgPyBOZXdHZW5lcmF0b3JGdW5jdGlvbiA6IE5ld0Z1
bmN0aW9uOworICAgICAgICAgICAgTm9kZVR5cGUgb3AgPSAob3Bjb2RlSUQgPT0gb3BfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCkgPyBOZXdHZW5lcmF0b3JGdW5jdGlvbiA6CisgICAgICAgICAgICAg
ICAgKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jX2V4cCkgPyBOZXdBc3luY0Z1bmN0aW9u
IDogTmV3RnVuY3Rpb247CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJvemVuKSwg
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsK
LSAgICAgICAgICAgIAorICAgIAogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENPREVfTEVO
R1RIKG9wX25ld19mdW5jX2V4cCkgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3VsZCBlcWF1YWwgdG8g
b25lIG9mIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoT1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuY19leHApID09IE9QQ09ERV9MRU5HVEgob3Bf
bmV3X2FzeW5jX2Z1bmNfZXhwKSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3Vs
ZCBlcWF1YWwgdG8gb25lIG9mIG9wX25ld19hc3luY19mdW5jX2V4cCIpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYmZiNzAxOThlZWM0MDMx
NzRmYjYyZWU3NzllM2U3YzZlMWVhMGZjMy4uYTg3ODljN2IzNzk1NzAxNjcwZWMzNmVmYTE3MzAw
ODE1NjVjN2NmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMjM5LDYgKzIzOSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAg
Y2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5j
X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6CiAgICAgY2FzZSBvcF9zZXRf
ZnVuY3Rpb25fbmFtZToKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogog
ICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKaW5kZXggZTEyZGZhODc0YzM3MDBhN2ZjZDk1MjM2OTQxZTM2YTIyNjg4
OGVhMS4uNDU2Y2Y4Y2I4NGQ2NjYxNWUyZmEwOTA1NjBkMzQ1ZTFiNzRhNDgzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEyNzMsNiArMTI3Myw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0
b3JGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2
YXRpb246CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50KTsKQEAgLTEyODEsNiArMTI4Miw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgog
ICAgICAgICBpZiAobm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+aXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICB3cml0ZShXYXRj
aHBvaW50X2ZpcmUpOwogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IGJk
MzM5Yjg5YTUxMjRiM2Y3NDczYWExMmE3ZDQwODk2MGIwY2VmZjMuLjkxZmIyNzExZWY5MWU5ZjVj
MTMwYmRhYzk2NTMxYjcyMmE5NjE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC02Miw2ICs2Miw3IEBAIGJvb2wgY2xv
YmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQ
aGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5j
dGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTWF0ZXJp
YWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CkBAIC04MCw2
ICs4MSw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogCiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgLy8gTGlrZSBhYm92ZSwgYnV0
IHdpdGggdGhlIEpTRnVuY3Rpb24gYWxsb2NhdGlvbiBjYXZlYXQuCiAgICAgICAgIHJldHVybiBu
b2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlv
bigpLT5pc1N0aWxsVmFsaWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IDllODUzZTNkY2YzNGZmYzc1YTU0ZGQ4YzFhZjQ3YzFkMTFhMmYwM2IuLjQxMTg4
MWM3MjkzNDUwNjNmODU1NThlY2JmYWM1NmFmYTY5OWU2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI0NCw2ICsyNDQsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
Q3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAg
Y2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKQEAgLTI4OCw2ICsyODksNyBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIE5l
d0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdB
c3luY0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFRocm93U3Rh
dGljRXJyb3I6CiAgICAgY2FzZSBHZXRQcm9wZXJ0eUVudW1lcmF0b3I6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBjYmY3YjBlZDc1NjgwMmRiNzUz
N2NjZWFlNDFmNGNjN2MzYTNiYjFkLi5iMTVmMDBmZmUwNTY2NjhmZWIyZjVlYTA2NmU4NjA0OTcx
OWEwNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTE0MzUsNiArMTQzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09i
amVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhh
bnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1
bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJl
c3Q6CkBAIC0xNTk2LDcgKzE1OTcsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7Cisg
ICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5bmNG
dW5jdGlvbjogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKaW5kZXggODBiMzM3NGIzZWQ5ZTM0MDAxNmMyYzI2ZjVhNTgwYzgzYzYw
NDI3OC4uZmJiYjFiOTlmZTA5YjBlZTRlNDM3NGFkMzY5ZjE3M2YzZTZjNTE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAgRXhp
dE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0
YXRlKQogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdGdW5jdGlv
bjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgTmV3QXN5bmNGdW5j
dGlvbjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFRvTnVtYmVyOgogICAg
ICAgICByZXN1bHQgPSBFeGl0c0ZvckV4Y2VwdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDFiMjFkZTk5NTRkYjU4OTAwZGJiMzQ2ODVlNzk1NWQwMDZlYzY3MDMuLjM2
MTE1ZGViYjlhYmQwZjg5YjBmNGQ0ODI5MDU2MTEwYTYxOWZjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC01ODcsNyArNTg3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
b252ZXJ0VG9QaGFudG9tTmV3RnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gTmV3RnVuY3Rpb24gfHwgbV9vcCA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgICAg
IEFTU0VSVChtX29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3AgPT0gTmV3R2VuZXJhdG9yRnVuY3Rp
b24gfHwgbV9vcCA9PSBOZXdBc3luY0Z1bmN0aW9uKTsKICAgICAgICAgbV9vcCA9IFBoYW50b21O
ZXdGdW5jdGlvbjsKICAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVzdEdlbmVyYXRlOwogICAgICAg
ICBtX29wSW5mbyA9IE9wSW5mb1dyYXBwZXIoKTsKQEAgLTYwNSw2ICs2MDUsMTYgQEAgcHVibGlj
OgogICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX29wID09IE5ld0FzeW5jRnVuY3Rpb24pOworICAgICAgICBtX29wID0gUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb247CisgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAg
ICAgbV9vcEluZm8gPSBPcEluZm9XcmFwcGVyKCk7CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5m
b1dyYXBwZXIoKTsKKyAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQor
CiAgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9vcCA9PSBDcmVhdGVBY3RpdmF0aW9uIHx8IG1fb3AgPT0gTWF0ZXJpYWxp
emVDcmVhdGVBY3RpdmF0aW9uKTsKQEAgLTE0OTgsNiArMTUwOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBPdmVycmlkZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoK
ICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBOZXdBc3lu
Y0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2Ug
TWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKQEAg
LTE3MzMsNiArMTc0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAg
ICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246
CisgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0NCw2
ICsxNzU2LDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2Fz
ZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1
bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xNzU5LDYgKzE3NzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNs
b25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21O
ZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMDA1YWY2NjkwNjQ0M2E1NWQzZDNjNjJhNThk
NjZhMjFjNzJiOTg2YS4uYmZmN2ZlMzUyNjE4ZjRjMDdiOTBiYzIwYjYwMDI4ODA3YTYyMzk4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMzA3LDYgKzMwNyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNYXRlcmlhbGl6
ZU5ld09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQ
aGFudG9tTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQaGFudG9tTmV3QXN5bmNGdW5jdGlvbiwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21DcmVhdGVBY3Rp
dmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0
ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIFwKQEAgLTM1NSw2ICszNTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBcCisgICAgbWFjcm8oTmV3QXN5bmNGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCisg
ICAgXAogICAgIC8qIFRoZXNlIGFyZW4ndCB0ZXJtaW5hbHMgYnV0IGFsd2F5cyBleGl0ICovIFwK
ICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRocm93U3Rh
dGljRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmlu
ZGV4IDgxYzMwNjE2OTE3YTU4MWIxMTBmYjY2NTVhOWZiMjg2OTE3YjcxNjcuLmExYjgzOTM2OTg1
NGRjN2ZjYTlkNDM0Y2ZiYmQyYjk5ODc0NmYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICAvLyBvbmNlIGl0IGlzIGVzY2FwZWQg
aWYgaXQgc3RpbGwgaGFzIHBvaW50ZXJzIHRvIGl0IGluIG9yZGVyIHRvCiAgICAgLy8gcmVwbGFj
ZSBhbnkgdXNlIG9mIHRob3NlIHBvaW50ZXJzIGJ5IHRoZSBjb3JyZXNwb25kaW5nCiAgICAgLy8g
bWF0ZXJpYWxpemF0aW9uCi0gICAgZW51bSBjbGFzcyBLaW5kIHsgRXNjYXBlZCwgT2JqZWN0LCBB
Y3RpdmF0aW9uLCBGdW5jdGlvbiwgR2VuZXJhdG9yRnVuY3Rpb24gfTsKKyAgICBlbnVtIGNsYXNz
IEtpbmQgeyBFc2NhcGVkLCBPYmplY3QsIEFjdGl2YXRpb24sIEZ1bmN0aW9uLCBHZW5lcmF0b3JG
dW5jdGlvbiwgQXN5bmNGdW5jdGlvbiB9OwogCiAgICAgZXhwbGljaXQgQWxsb2NhdGlvbihOb2Rl
KiBpZGVudGlmaWVyID0gbnVsbHB0ciwgS2luZCBraW5kID0gS2luZDo6RXNjYXBlZCkKICAgICAg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKQEAgLTIzMyw3ICsyMzMsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzRnVuY3Rpb25BbGxvY2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2tpbmQgPT0gS2luZDo6RnVuY3Rpb24gfHwgbV9raW5kID09IEtpbmQ6OkdlbmVy
YXRvckZ1bmN0aW9uOworICAgICAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OkZ1bmN0aW9uIHx8
IG1fa2luZCA9PSBLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbiB8fCBtX2tpbmQgPT0gS2luZDo6QXN5
bmNGdW5jdGlvbjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2NhdGlv
biYgb3RoZXIpIGNvbnN0CkBAIC0yNzMsNiArMjczLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG91dC5wcmludCgiR2VuZXJhdG9yRnVuY3Rpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgIGNhc2UgS2luZDo6QXN5bmNGdW5jdGlvbjoKKyAgICAgICAgICAgIG91dC5wcmludCgi
QXN5bmNGdW5jdGlvbiIpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBLaW5k
OjpBY3RpdmF0aW9uOgogICAgICAgICAgICAgb3V0LnByaW50KCJBY3RpdmF0aW9uIik7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTgzMiwxNiArODM2LDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246Cisg
ICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAgaWYgKGlzU3RpbGxW
YWxpZChub2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25G
dW5jdGlvbigpKSkgewogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+Y2hpbGQx
KCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5j
dGlvbikKICAgICAgICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9k
ZSwgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb24pOworICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBOZXdBc3luY0Z1bmN0aW9uKQorICAgICAgICAgICAgICAgIHRh
cmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpBc3lu
Y0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0YXJnZXQgPSAm
bV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb24pOwor
CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0aW9uRXhlY3V0YWJsZVBMb2MsIExhenlOb2Rl
KG5vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIHdyaXRlcy5hZGQoRnVuY3Rpb25B
Y3RpdmF0aW9uUExvYywgTGF6eU5vZGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE0NDQsMTIgKzE0NTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBPcEluZm8oc2V0KSwgT3BJbmZvKGRhdGEpLCAwLCAwKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBB
bGxvY2F0aW9uOjpLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBBbGxvY2F0
aW9uOjpLaW5kOjpGdW5jdGlvbjogewogICAgICAgICAgICAgRnJvemVuVmFsdWUqIGV4ZWN1dGFi
bGUgPSBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKS0+Y2VsbE9wZXJhbmQoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgTm9kZVR5cGUgbm9kZVR5cGUgPQotICAgICAgICAgICAgICAgIGFsbG9j
YXRpb24ua2luZCgpID09IEFsbG9jYXRpb246OktpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uID8gTmV3
R2VuZXJhdG9yRnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmtpbmQoKSA9PSBBbGxvY2F0aW9uOjpLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbiA/IE5ld0dl
bmVyYXRvckZ1bmN0aW9uIDoKKyAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLmtpbmQoKSA9PSBB
bGxvY2F0aW9uOjpLaW5kOjpBc3luY0Z1bmN0aW9uID8gTmV3QXN5bmNGdW5jdGlvbiA6IE5ld0Z1
bmN0aW9uOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2Rl
KAogICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5wcmVkaWN0aW9uKCks
IG5vZGVUeXBlLApAQCAtMTc5MSw2ICsxODAxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNh
c2UgTmV3QXN5bmNGdW5jdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlv
bigpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDQ3LDcgKzIwNjEsOCBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAg
ICAgICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExvY2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0
aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUpOwogICAgICAgICAgICAgQVNTRVJUKGxvY2F0
aW9ucy5zaXplKCkgPT0gMik7CiAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CmluZGV4IDA5MDdiOWZkODllNmQ5ZjM5MTgwYjk3YjA4ZjI0NzNmNWQwZDQzZDEuLmRiOWYzMWRj
MjY4NTQwODkxMjI1YTYzNzZiMWJjNDVjNDM2MzEwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CkBAIC03MzAsNyArNzMwLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CiAg
ICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTEwMDcsNiArMTAwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5l
d09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdBc3lu
Y0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZVJlc3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDA2NWU2NjUzNGMyN2ZmZWQ0MWQ4NTdlNjgyNzc0MzA0OTA5OGRlZTguLmFlNjMyZDMyOWMz
YTc2ZTFmN2VhNjViNmQxMTNhNDEzNjAyZWRiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMDMsNiArMzAzLDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBj
YXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAg
ICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CkBAIC0zNTEs
NiArMzUyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAg
ICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JG
dW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IGQzMDhiOThlZjkwN2E3YjcxNGNhZTk4NmU5ODA5ZjhkODMw
NTk3NGIuLjNhMWQwZmZjNTNhNWFhMzAzODAwMzczN2I1NWM3OWVmNTg2YzNlYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC01MCw2
ICs1MCw3IEBACiAjaW5jbHVkZSAiSklUTXVsR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUUmln
aHRTaGlmdEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVFN1YkdlbmVyYXRvci5oIgorI2luY2x1
ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCkBAIC02
MzYwLDcgKzYzNjEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUgogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgbm9k
ZVR5cGUgPSBub2RlLT5vcCgpOwotICAgIEFTU0VSVChub2RlVHlwZSA9PSBOZXdGdW5jdGlvbiB8
fCBub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgQVNTRVJUKG5vZGVUeXBl
ID09IE5ld0Z1bmN0aW9uIHx8IG5vZGVUeXBlID09IE5ld0dlbmVyYXRvckZ1bmN0aW9uIHx8IG5v
ZGVUeXBlID09IE5ld0FzeW5jRnVuY3Rpb24pOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2NvcGVHUFIgPSBz
Y29wZS5ncHIoKTsKQEAgLTYzNzUsNiArNjM3Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdGdW5jdGlvbihOb2RlKiBub2RlKQogCiAgICAgICAgIGlmIChub2RlVHlwZSA9PSBO
ZXdHZW5lcmF0b3JGdW5jdGlvbikKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnVuY3Rpb24sIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpOwor
ICAgICAgICBlbHNlIGlmIChub2RlVHlwZSA9PSBOZXdBc3luY0Z1bmN0aW9uKQorICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCByZXN1bHRHUFIsIHNj
b3BlR1BSLCBleGVjdXRhYmxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJs
ZSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02Mzg0LDYgKzYzODcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oTm9kZSogbm9kZSkKIAog
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KICAgICAgICAgbm9kZVR5cGUgPT0gTmV3R2VuZXJh
dG9yRnVuY3Rpb24gPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKKyAgICAgICAgbm9kZVR5
cGUgPT0gTmV3QXN5bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6CiAgICAgICAg
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1
bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
QEAgLTY0MDgsNiArNjQxMiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVu
Y3Rpb24oTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZh
bGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1
dGFibGUpKTsKICAgICB9CiAKKyAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbikg
eworICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9uPihyZXN1
bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29wZUdQUiwgc2xv
d1BhdGgsIEpTQXN5bmNGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUoMCksIGV4ZWN1dGFibGUsIEpT
QXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsK
KworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRo
aXMsIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgfQorCiAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhNGU3YzEw
MGVhNGExNTNmMjNjMDBlNDYxMWQwYmNiYmM0Y2M4MGJiLi42NTc0NDJmNmZkMTE1YjJhYTM2MmZm
NWFkNGY2MGYzZWQ4MWZhNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTUwMTQsNiArNTAxNCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0FzeW5jRnVu
Y3Rpb246CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7
CiAKQEAgLTU2MDQsNiArNTYwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3
RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2Fz
ZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYzEyMTQzYTA5ODI5YjJlOGE3ZGFmMTQ3OWNhMDU5ZGUxY2QyNTExMC4uMjJhYWQ3
N2ZlYTU5MjdhYTU0MDM3MTQzNDhiYjJhOTVkNjc2MGU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MTc5LDYgKzUxNzks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNl
IE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBO
ZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24obm9kZSk7CiAgICAg
ICAgIGJyZWFrOwogCkBAIC01ODIwLDYgKzU4MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2Ug
UGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA1
ZjMyYjRkNjE4MmQ5YzExMDQ5ZGRjMjAzMGI5OWZhN2NlYmRmYWM2Li42MGI4ZjRhYWFlOTBiMTc3
Yzk5NDMyNmVjZTAyZmJhOTlmZGU3Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzE3
LDYgKzMxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3Vt
ZW50czoKICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgog
ICAgICAgICAgICAgICAgIC8vIE5vZGVzIHRoYXQgYWxsb2NhdGUgZ2V0IHRvIHNldCB0aGVpciBl
cG9jaCBiZWNhdXNlIGZvciB0aG9zZSBub2RlcyB3ZSBrbm93CiAgICAgICAgICAgICAgICAgLy8g
dGhhdCB0aGV5IHdpbGwgYmUgdGhlIG5ld2VzdCBvYmplY3QgaW4gdGhlIGhlYXAuCiAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5zZXRFcG9jaChtX2N1cnJlbnRFcG9jaCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCmluZGV4IGJlZDE5ZjVjMzNhYTEwODE4N2Q4YjE5YWE0M2Y3ZjYwOWFjN2FlODAuLjBi
MGJlNDQzMDk1MGViOWM1OGViZTRmMmMwY2Y1YTUyZGIzODk0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCkBAIC0xNzcsNiArMTc3LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2Ug
TmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0
dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVy
YXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CisgICAgICAgICAgICAgICAgICAg
IHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDQy
MzMwMWM5MTliOTI1YWZhYzFlMjJkNThkZmQ0ZGVlYWZkYTIzYzQuLjczMzkzMmZmNDk3MzlkZDc3
MGNiYjQ0MDQ1NzA0YTkzOWZmOWFiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCkBAIC01MjksNiArNTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3
RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rp
b246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1
bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CkBAIC02NjgsNiArNjY5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJh
dG9yRnVuY3Rpb246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICBj
YXNlIFBoYW50b21DcmVhdGVSZXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IGJjZTM4YTY4NmJjOTQ3YjVjYzYyZDc3OGE1Zjg0NjM5MDY3
MjhjOWQuLmY5OTE3OWYyZDRiYzVkZmIyYmM3NDdiMmQ5YzY4MjFkMmI4ZDdhMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTExOSw2ICsx
MTksNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNl
IE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICBj
YXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgQ3Jl
YXRlRGlyZWN0QXJndW1lbnRzOgpAQCAtMjI2LDYgKzIyNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoK
ICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0
b3JGdW5jdGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hl
Y2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKaW5kZXggZmQ4YTkwYmMyZjYzNWRlM2VkMGZmNGE0MTFhM2FkMTJmMzc5
YTA5OC4uOWZjZmQ2NTMwMTcyNjRkNjE2NzYyZjY4NDI2MjI1NGQ1Y2UyZmNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNzEwLDYgKzcx
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdGdW5j
dGlvbjoKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBO
ZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9uKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CkBAIC0x
MDgxLDYgKzEwODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6
CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21O
ZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlv
bjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgpA
QCAtMzk2Nyw4ICszOTY5LDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdG
dW5jdGlvbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0
aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbik7CisgICAgICAgIEFT
U0VSVChtX25vZGUtPm9wKCkgPT0gTmV3RnVuY3Rpb24gfHwgbV9ub2RlLT5vcCgpID09IE5ld0dl
bmVyYXRvckZ1bmN0aW9uIHx8IG1fbm9kZS0+b3AoKSA9PSBOZXdBc3luY0Z1bmN0aW9uKTsKICAg
ICAgICAgYm9vbCBpc0dlbmVyYXRvckZ1bmN0aW9uID0gbV9ub2RlLT5vcCgpID09IE5ld0dlbmVy
YXRvckZ1bmN0aW9uOworICAgICAgICBib29sIGlzQXN5bmNGdW5jdGlvbiA9IG1fbm9kZS0+b3Ao
KSA9PSBOZXdBc3luY0Z1bmN0aW9uOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIHNjb3BlID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCkBAIC0zOTc2LDYgKzM5NzksNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+
aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0KICAgICAg
ICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8gdm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUs
IHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKSA6CisgICAgICAgICAgICAgICAgaXNBc3luY0Z1bmN0
aW9uID8gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5j
dGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpIDoKICAg
ICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdG
dW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOwog
ICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM5ODMsNiArMzk4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9CiAgICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZSgpIDoKKyAgICAgICAgICAgIGlzQXN5bmNGdW5jdGlvbiA/IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5jdGlvblN0
cnVjdHVyZSgpIDoKICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICAgICAgCiAgICAgICAg
IExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQwMTYsNiArNDAy
MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRp
cmVjdEdQUigpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhlY3V0YWJsZSkpOwogICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaXNBc3luY0Z1bmN0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBd
LmRpcmVjdEdQUigpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZXhlY3V0YWJsZSkpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwKICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25z
WzBdLmRpcmVjdEdQUigpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA1OTJiM2NhYzMxZGQwMDUzMDcy
Njc0ZTNjYTMwNWNiYTA1NDI4YWY1Li5kNzQ3NTI0MGNiZGI3NTVlMzBhMzU5MzIzNWFmMjQ3ZDZi
ZDMyNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGVExKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRM
TGF6eVNsb3dQYXRoLmgiCiAjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAi
SlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpA
QCAtODEsNiArODIsNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
b3B1bGF0ZU9iamVjdEluT1NSKAogCiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAg
Y2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CkBAIC0x
NTEsNyArMTUzLDggQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICB9CiAKICAgICBjYXNlIFBoYW50b21OZXdGdW5j
dGlvbjoKLSAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjogeworICAgIGNhc2Ug
UGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVu
Y3Rpb246IHsKICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRoZSBleGVjdXRhYmxlIGFuZCBh
Y3RpdmF0aW9uIGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBu
dWxscHRyOwogICAgICAgICBKU1Njb3BlKiBhY3RpdmF0aW9uID0gbnVsbHB0cjsKQEAgLTE2Niw4
ICsxNjksMTAgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0
ZXJpYWxpemVPYmplY3RJbk9TUigKIAogICAgICAgICBpZiAobWF0ZXJpYWxpemF0aW9uLT50eXBl
KCkgPT0gUGhhbnRvbU5ld0Z1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246
OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFi
bGUsIGFjdGl2YXRpb24pOwotICAgICAgICBBU1NFUlQobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkg
PT0gUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
dm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOworICAgICAgICBlbHNlIGlmIChtYXRlcmlhbGl6
YXRpb24tPnR5cGUoKSA9PSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm4gSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZhdGlvbik7ICAgIAorICAgICAg
ICBBU1NFUlQobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0FzeW5jRnVuY3Rp
b24pOworICAgICAgICByZXR1cm4gSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxlLCBhY3RpdmF0aW9uKTsKICAg
ICB9CiAKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOGFhNmMxMWQ4
Y2UwMDRjZDRiNjQ1YmUwNmE5NThmZjVkMWQzZjBjYS4uMTY3NWY4MjI5YjM4ZGI3YjM4YzllYTkx
NzM4ZWQzMDZhNjAxYjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjEyLDcgKzYxMiw2IEBAIG1fICMjIHByb3Blck5hbWUg
IyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoCiAgICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dU
eXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpOwotICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIChGdW5jdGlvbkNvbnN0cnVjdG9yKilmdW5jdGlvbkNvbnN0cnVjdG9yKTsKIAogICAgIEFy
cmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3Bl
Y2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CkBAIC02NjgsMTUgKzY2NywxMCBAQCBtXyAjIyBsb3dl
ck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YwogICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwogICAgIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBE
b250RW51bSB8IFJlYWRPbmx5KTsKIAotICAgIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5pbml0
TGF0ZXIoCi0gICAgICAgIFtdKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQp
IHsKLSAgICAgICAgICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUgPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5j
dGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0
Lmdsb2JhbC0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwotICAgICAgICAgICAgaW5pdC5z
ZXRQcm90b3R5cGUoYXN5bmNGdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgICAgICAgICBpbml0LnNl
dFN0cnVjdHVyZShKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0
Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUpKTsKLSAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0
b3IoUHJvcGVydHlOYW1lKG51bGxwdHIpLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZShpbml0LnZtLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5nZXQo
KSksIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpKTsKLQotICAgICAgICAgICAgaW5pdC5nbG9iYWwt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGluaXQudm0sIGluaXQudm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBhc3luY0Z1bmN0aW9uUHJvdG90
eXBlQXN5bmNGdW5jdGlvblJlc3VtZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQuZ2xvYmFs
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwotICAgICAgICB9KTsKKyAgICBt
X2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUodm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKKyAgICBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IqIGFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciA9IEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3RvciksIG1fYXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSk7CisgICAgbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0gfCBSZWFkT25seSk7CisgICAgbV9hc3luY0Z1bmN0
aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9v
YmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBt
X2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
QEAgLTExNzUsNyArMTE2OSw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3Ro
cm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVy
R2V0dGVyU2V0dGVyKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVM
b2FkZXIpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ29uc3Ry
dWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90
eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlw
ZSk7CkBAIC0xMTg0LDcgKzExNzcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwotICAgIHRoaXNPYmpl
Y3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUpOwogCiAgICAg
dGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpAQCAt
MTIyMCw2ICsxMjEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDZiMWJmZjhkNGVmMzgyNjg0NmViM2M5NGE1ZWI0N2M1MTZjYTIyMjEuLjMwOTE4Y2RmMGMz
MTdiZTkyMmFkYzEwODEzYTZjMzY1ZGQyZDY3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjQxLDcgKzI0MSw2IEBAIHB1YmxpYzoK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+
IG1fc3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3Rv
cjsKLSAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0
cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25z
dHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0
cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNl
Q29uc3RydWN0b3I7CkBAIC0zMTYsNyArMzE1LDggQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zm
c2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
cHJpdmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdF
eHBTdHJ1Y3R1cmU7Ci0gICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fYXN5bmNGdW5jdGlvblN0cnVj
dHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8QXN5bmNGdW5jdGlvblByb3RvdHlwZT4gbV9hc3luY0Z1
bmN0aW9uUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1
bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9i
amVjdFN0cnVjdHVyZTsKQEAgLTU1MCwxOSArNTUwLDcgQEAgcHVibGljOgogICAgIEl0ZXJhdG9y
UHJvdG90eXBlKiBpdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmdldCgpOyB9CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQotCi0g
ICAgTGF6eUNsYXNzU3RydWN0dXJlJiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOwotICAgIH0KLSAgICBj
b25zdCBMYXp5Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0gICAg
fQotICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqPihs
YXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLnByb3RvdHlwZSh0aGlzKSk7IH0KLSAgICBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4o
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGVDb25jdXJyZW50bHkoKSk7IH0K
LSAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBs
YXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldCh0aGlzKTsgfQotICAgIFN0cnVjdHVyZSog
YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIGxhenlB
c3luY0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0Q29uY3VycmVudGx5KCk7IH0KKyAgICBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAKICAgICBTdHJ1Y3R1cmUqIGRlYnVn
Z2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KQEAgLTYyMiw2ICs2
MTAsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5l
cmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNGdW5j
dGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogc3ltYm9sT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
eW1ib2xPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTExZGY4NWE5OGJhMjgyOGU3M2EwZDc2ZDJl
MTY1MTUzNWVjM2Q2Yy4uYTlmNDAzNWQxN2M0MDdmODFmZTUzODMwNWUwNzVlOTVhNDU3MmYxNSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxNi0xMS0xNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtKU0NdIEhhbmRsZSBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3luY19m
dW5jX2V4cCBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0cyBiYXNlZCBvbiB0ZXN0cyBmcm9tIGh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8xOTQyMTYuCisKKyAgICAgICAgKiBhc3luY0Z1bmN0aW9uVGVz
dHMueWFtbDoKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW5vYmFzZWxp
bmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9hc3luYy1mdW5jdGlvbi1jcmVhdGUtb3B0
aW1pemVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFy
YXRpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLXB1
dC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24t
c2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9h
c3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctb3NyZXhpdC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanM6IEFk
ZGVkLgorCiAyMDE2LTExLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTb21lIG9mIEpTU3RyaW5nVmlldzo6U2FmZVZpZXcgbWV0aG9kcyBhcmUgbm90IGlkaW9t
YXRpY2FsbHkgc2FmZSBmb3IgSlNTdHJpbmcgdG8gU3RyaW5nVmlldyBjb252ZXJzaW9ucy4KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwgYi9KU1Rlc3RzL2FzeW5j
RnVuY3Rpb25UZXN0cy55YW1sCmluZGV4IDVmYjc4YmVkNzRiYzQ4MDIxMjNiNjY2Yzc1NmIxNTI0
ZjhiNTIxYTYuLjFlMzhiZmI5Y2M0ZDJlYWU4ZDFhYjg4ZmQwZDJiNzUwNTdlZWYzMzMgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwKKysrIGIvSlNUZXN0cy9hc3lu
Y0Z1bmN0aW9uVGVzdHMueWFtbApAQCAtNDQsNiArNDQsMjQgQEAKIC0gcGF0aDogc3RyZXNzL2Fz
eW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKICAgY21kOiBydW5EZWZhdWx0CiAKKyMgRlRMSklU
CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCisgIGNt
ZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW5vYmFz
ZWxpbmUuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlv
bi1kZWNsYXJhdGlvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcworICBjbWQ6IHJ1bkRl
ZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmct
b3NyZXhpdC5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0
aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctcHV0LmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRo
OiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxv
Y2F0ZS5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0aW9u
LWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0LmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRo
OiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLXB1dC5qcworICBjbWQ6
IHJ1bkRlZmF1bHQKKwogIyBUZXN0MjYyCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMv
QXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWNvbnN0cnVjdC5qcwogICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW5vYmFzZWxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1mdW5jdGlvbi1jcmVhdGUtbm9iYXNlbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjM3MDM1N2Jh
MzQxMjhmNjJkNjg4MmFiODRlZDI0OGZlOTkwZWVhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW5vYmFzZWxpbmUuanMKQEAgLTAsMCArMSwx
NiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9T
WU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24g
dGVzdChjb25kKQoreworICAgIGlmIChjb25kKSB7CisgICAgICAgIHZhciBmdW5jID0gYXN5bmMg
ZnVuY3Rpb24gKCkge307CisgICAgICAgIHJldHVybiBmdW5jOworICAgIH0KKworICAgIHJldHVy
biA0MjsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytp
KQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9u
LWNyZWF0ZS1vcHRpbWl6ZWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1jcmVh
dGUtb3B0aW1pemVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZjRlMDRiZGViNGU3ZDdhZDU1ZTFkYmM0YWQ3
Zjc4Mjg4MWEzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5j
dGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vIFRoaXMgdGVzdCBy
ZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQg
YXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCkge30uX19wcm90b19fOworCitmdW5jdGlvbiB0ZXN0
QXN5bmNGdW5jdGlvbkV4cHJlc3Npb24oKQoreworICAgIHJldHVybiBhc3luYyBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBhd2FpdCA0MjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfTsKK30K
K25vSW5saW5lKHRlc3RBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbik7CisKK2Z1bmN0aW9uIHRlc3RB
c3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oKQoreworICAgIGFzeW5jIGZ1bmN0aW9uIGFzeW5jRm4o
KQorICAgIHsKKyAgICAgICAgYXdhaXQgNDI7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwor
ICAgIHJldHVybiBhc3luY0ZuOworfQorbm9JbmxpbmUodGVzdEFzeW5jRnVuY3Rpb25EZWNsYXJh
dGlvbik7CisKK2Z1bmN0aW9uIHRlc3RBc3luY0Fycm93RnVuY3Rpb24oKQoreworICAgIHJldHVy
biBhc3luYygpID0+CisgICAgeworICAgICAgICBhd2FpdCA0MjsKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgfTsKK30KK25vSW5saW5lKHRlc3RBc3luY0Fycm93RnVuY3Rpb24pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxkQmUodGVzdEFzeW5jRnVuY3Rpb25F
eHByZXNzaW9uKCkuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBzaG91
bGRCZSh0ZXN0QXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKCkuX19wcm90b19fLCBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZSh0ZXN0QXN5bmNBcnJvd0Z1bmN0aW9uKCkuX19w
cm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9j
YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2lu
Zy1uby1kb3VibGUtYWxsb2NhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ4MmQxNDQyYjRjYjFmZWQ2MjQw
MzBiNmEzYjgwYjU0ZGUzMjU0ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzCkBA
IC0wLDAgKzEsNDEgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5D
RlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisK
K2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYg
KG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjog
IiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9Cit2YXIgQXN5bmNGdW5j
dGlvblByb3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCl7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9u
IGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxsKTsKKworZnVuY3Rpb24gc2luayAo
cCwgcSkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGYoKSB7IH07CisgICAgaWYgKHApIHsKKyAgICAg
ICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBmCisgICAgICAgIGlmIChxKSB7Cisg
ICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGY7CisgICAg
fQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9JbmxpbmUoc2luayk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgbyA9IHNpbmsodHJ1ZSwgZmFsc2Up
OworICAgIHNob3VsZEJlKG8uX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAg
ICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJl
IDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlv
biBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhl
IGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5r
KHRydWUsIHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJvcjogZXhwZWN0ZWQgby54IHRvIGJl
IDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1m
dW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWExODBkZmZlMDQzNzcyMjViNjYwODU2OWUzNDk2ODU2MDM4MTM3NQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctb3Ny
ZXhpdC5qcwpAQCAtMCwwICsxLDQ1IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VT
MjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisv
L0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikg
eworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiAr
IG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitm
dW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBwcm9taXNlLCBtc2cpIHsKKyAgICBsZXQg
YWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHByb21pc2UudGhlbihmdW5j
dGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJh
aW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVh
bDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3ZhciBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24oKXt9Ll9fcHJvdG9fXzsKKworZnVu
Y3Rpb24gc2luayAocCwgcSkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGcoeCkgeyByZXR1cm4geDsg
fTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyByZXR1cm4gZzsgfQorICAgIGFzeW5j
IGZ1bmN0aW9uIGYoeCkgeyByZXR1cm4geDsgfTsKKyAgICByZXR1cm4gZjsKK30KK25vSW5saW5l
KHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgZiA9
IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZUFzeW5jKDQyLCBmKDQyKSk7Cit9CisKKy8vIEF0
IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUg
RlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBv
biBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3Rv
X18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworc2hvdWxkQmVBc3luYyg0MiwgZig0MikpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lu
a2luZy1wdXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1z
aW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2YwMjgxNzVkYmYyMjg5YjgwMGZiN2VmZTNmZDg5
YTQ2MjNlMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rp
b24tZGVjbGFyYXRpb24tc2lua2luZy1wdXQuanMKQEAgLTAsMCArMSw1MiBAQAorLy8gVGhpcyB0
ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5h
YmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0
ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cgPSAiIGZv
ciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcHJv
bWlzZSwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsK
KyAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFs
ID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9y
KQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFs
LCBtc2cpOworfQorCit2YXIgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9u
KCl7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIHNpbmsgKHAsIHEpIHsKKyAgICBhc3luYyBmdW5j
dGlvbiBnKHgpIHsgcmV0dXJuIHg7IH07CisgICAgaWYgKHApIHsgaWYgKHEpIGcuaW5uZXIgPSA0
MjsgcmV0dXJuIGc7IH0KKyAgICBhc3luYyBmdW5jdGlvbiBmKHgpIHsgcmV0dXJuIHg7IH07Cisg
ICAgcmV0dXJuIGY7Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworICAgIHNob3VsZEJl
KGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZUFzeW5j
KDQyLCBmKDQyKSk7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQg
YmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24g
dGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2Up
Oworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworc2hvdWxk
QmVBc3luYygxMiwgZigxMikpOworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBu
b3Qgc2luayBiZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luayh0cnVl
LCB0cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsK
K3ZhciByZXN1bHQgPSBmLmlubmVyOworaWYgKHJlc3VsdCAhPT0gNDIpCisgICAgdGhyb3cgIkVy
cm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctbm8tZG91Ymxl
LWFsbG9jYXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1z
aW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzU3Njk1ZDgxNDQxOTA2
Y2I1ZWY4NTEwMmQ4MzI0NmJhMDdmNWE0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5q
cwpAQCAtMCwwICsxLDM5IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19B
U1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tp
cAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KK3ZhciBBc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24o
KXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gY2FsbChvKSB7IG8ueCA9IDM7IH0KK25vSW5saW5l
KGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGYgPSBhc3luYyBmdW5j
dGlvbigpIHsgfTsKKyAgICBpZiAocCkgeworICAgICAgICBjYWxsKGYpOyAvLyBGb3JjZSBhbGxv
Y2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAgICAgICAgIE9TUkV4aXQoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9CisgICAgcmV0dXJuIHsgJ3gnOiAyIH07
Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkg
eworICAgIHZhciBvID0gc2luayh0cnVlLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoby5fX3Byb3Rv
X18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIGlmIChvLnggIT0gMykKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBidXQgaXMgIiArIHJlc3VsdDsKK30K
KworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBjb21waWxlZCBkb3du
IHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgcHJvcGVybHkgYWxs
b2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1ZSwgdHJ1ZSk7CitzaG91bGRCZShm
Ll9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CitpZiAoZi54ICE9IDMpCisgICAg
dGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBidXQgaXMgIiArIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2lu
Zy1vc3JleGl0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1z
aW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ0MGRhOGM4MmNiOWQxNzU1MGU5YmUzZDdj
NWVjZmFmZmMxNDJiNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1
bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0LmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8v
IFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRv
IGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJl
KGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNn
ID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4
cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVk
LCBwcm9taXNlLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZh
bHNlOworICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsg
fSwKKyAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBh
Y3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFk
RXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBh
Y3R1YWwsIG1zZyk7Cit9CisKK3ZhciBBc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gYXN5bmMgZnVu
Y3Rpb24oKXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIHZhciBn
ID0gYXN5bmMgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07CisgICAgaWYgKHApIHsgaWYgKHEp
IE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKHgpIHsg
cmV0dXJuIHg7IH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIGZhbHNlKTsKKyAgICBzaG91bGRC
ZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgc2hvdWxkQmVBc3lu
Yyg0MiwgZig0MikpOworfQorCisvLyBBdCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24gc2hvdWxk
IGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBDaGVjayB0aGF0IHRoZSBmdW5jdGlv
biBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQKK3ZhciBmID0gc2luayh0cnVlLCB0
cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK3No
b3VsZEJlQXN5bmMoNDIsIGYoNDIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3lu
Yy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctcHV0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NWNkZGQ0
OWMxNDQwYzViMDYxZjY2MGU0OTZjZmJkMjgwOTQyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctcHV0LmpzCkBAIC0w
LDAgKzEsNDkgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVO
Q1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYgKG1z
ZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiAr
IGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZEJlQXN5bmMoZXhwZWN0ZWQsIHByb21pc2UsIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAg
dmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7
IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBo
YWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3Mo
KTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hv
dWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKwordmFyIEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUgPSBhc3luYyBmdW5jdGlvbigpe30uX19wcm90b19fOworCitmdW5jdGlvbiBzaW5rIChw
LCBxKSB7CisgICAgdmFyIGcgPSBhc3luYyBmdW5jdGlvbih4KSB7IHJldHVybiB4OyB9OworICAg
IGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJldHVybiBnOyB9CisgICAgcmV0dXJuIGFz
eW5jIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHg7IH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUsIHRy
dWUpOworICAgIHNob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsK
KyAgICBzaG91bGRCZUFzeW5jKDQyLCBmKDQyKSk7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRo
ZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRlc3Qg
dGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIgZiA9
IHNpbmsodHJ1ZSwgZmFsc2UpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUpOworc2hvdWxkQmVBc3luYygxMiwgZigxMikpOworCisvLyBDaGVjayB0aGF0IHRo
ZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQK
K3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKK3Nob3VsZEJlKDQyLCBmLmlubmVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>